Do1e

Do1e

github
email

CITE Lab サーバー使用ガイド

この文は Mix Space によって xLog に同期更新されています
最適なブラウジング体験を得るために、元のリンクを訪問することをお勧めします
https://do1e.cn/posts/citelab/server-help


Tip

この文書は不定期に更新されますので、最新の動向を知るために定期的に戻ってくることを歓迎します。
右側の目次をクリック(モバイル端末では上にスクロールし、右下のボタン)して興味のある内容にジャンプしてください


接続とログイン#

ssh 接続または vscode で remote-ssh プラグインをダウンロードしてください。具体的には自分で検索してください。

::: banner {warning}
2024.08.11 から、すべてのサーバーはパスワードログインを使用できなくなります。新しいアカウントを割り当てる際には、公開鍵を提供してください。
公開鍵の内容(ssh-xxx xxxxx)を私に送ってください。
:::

鍵ペアを作成する:

Linux/Mac ではデフォルトで ~/.ssh/id_rsaまたは~/.ssh/id_ed25519(秘密鍵)、~/.ssh/id_rsa.pubまたは~/.ssh/id_ed25519.pub(公開鍵)に保存されます。
Windows ではデフォルトで C:\Users\[username]\.ssh フォルダに保存され、名前は同じです。
公開鍵は公開可能で、サーバーの ~/.ssh/authorized_keys ファイルに保存され、各行は異なる PC の秘密鍵に対応します。

::: banner {warning}
秘密鍵は漏洩しないように保存してください。すべての PC で同じ鍵を使用することは強くお勧めしません!

参考リンク:

  1. Windows で TPM を使用して SSH 鍵認証を安全に行う
  2. 南京大学が提供するパスワード管理サービス Bitwarden
  3. Bitwarden が提供する SSH 鍵ホスティング
    :::

自分のコンピュータ上で~/.ssh/configを以下のように設定できます。これにより、ssh s1コマンドでサーバーに直接接続でき、便利です。

詳細なチュートリアルは:VSCode で SSH 接続してリモートサーバーに接続する方法

vscode を使用して接続できず、常にダウンロード中と表示される場合は、最初に ssh で接続し、https://p.nju.edu.cn にログインしてください。ネットワーク接続の問題に関する章を参照してください。

環境設定#

uv#

プロジェクト管理環境には uv の使用を強くお勧めします。一度設定すれば、異なる場所で同じ環境設定を迅速に完了でき、環境のインストール速度は conda や pip よりも遥かに速いです。

関連チュートリアル: uv を使用して Python 環境を管理する

環境を設定した後、uv cache cleanを実行してキャッシュをクリアし、スペース不足の問題を緩和します。

conda#

conda: command not foundが表示された場合は、以下のコマンドを実行した後、ターミナルを再起動してください。

環境は~/.condaディレクトリに保存されるため、サーバーを切り替える際は、ディレクトリ全体をコピーするだけで環境移行が完了し、再設定は不要です。また、~/.condarcを以下のように編集し、envs_dirspkgs_dirs/nasdata/[name]/.conda/[envs/pkgs]に変更することで、nas 上に環境を設定し、複数のサービスで使用できるようにします。

環境を設定した後、conda clean —allrm -rf ~/.cache/pipを実行して、不要な conda キャッシュを多く削除し、スペース不足の問題を緩和します。

docker#

システムソフトウェアが要件を満たさない場合は、docker を使用できます。具体的なチュートリアルは自分で検索して学んでください。ただし、すべての docker コンテナは通常のユーザー権限で起動する必要があります。そうしないと削除されます **(2-6 行 <必ず> 保持し、残りは状況に応じてカスタマイズしてください)**

home のスペース不足問題を緩和する#

  • conda clean --all :conda キャッシュを削除
  • rm -rf ~/.cache/pip :pip キャッシュを削除
  • uv cache clean :uv キャッシュを削除
  • rmoldvs :古い vscode-server を削除

GPU 使用状況の確認#

https://nvtop.njucite.cn/ (推奨)
メールアドレスでログインし、管理者にメールアドレスを提出してホワイトリストに追加してもらう必要があります。

または、各マシンでnvtopコマンドを使用します。

指定した GPU の使用#

並列処理を有効にしない場合、pytorch はデフォルトで 0 号 GPU を使用します。並列処理を有効にすると、デフォルトで全 GPU を使用します。
コードを実行する前に CUDA_VISIBLE_DEVICES 環境変数を設定して使用する GPU を指定します。並列処理を使用しない場合は 1 号を使用:

または、並列処理を使用して 0-3 号を使用:

自分で多 GPU 並列処理の方法DataParallel(実装が比較的簡単ですが、最初の GPU で追加のメモリオーバーヘッドがあり、メモリ利用率が高くありません)とDistributedDataParallel(実装が比較的複雑でデバッグが難しいですが、効率が高いので、コードが固定された後にこの方法に変更することをお勧めします)を学んでみてください。

nvtopを使用して GPU の使用状況を確認し、占有されている場合や使用中の人と調整してください。

ネットワーク接続の問題#

プロキシ#

プロキシが設定されている場合、ネットワーク接続の問題(github など)がある場合は、ネットワーク接続が必要なコマンドの前に proxychains を追加します。例えば:

または、setproxyを使用してプロキシを設定した後にコマンドを実行します:

上記の 2 つの方法を試してみてください。すべてのウェブサイトで効果があるとは限りません。

キャンパスネットワークへのログイン#

p.nju.edu.cn にログインする必要がある場合は、このプロジェクトを参照してください:

Github Repo not found

The embedded github repo could not be found…

ミラー#

キャンパス内で一部のミラーへのアクセスが提供されています。詳細は NJU CITE Lab 提供のキャンパス内ミラーを参照してください。

バックグラウンドでコードを実行#

サーバーには tmux がインストールされており、バックグラウンドでコードを実行する(ターミナルを終了しても実行を続ける)には、基本的な機能を使用するだけで済みます。

ターミナルでtmux newと入力すると、新しいターミナルが表示され、そこで長時間実行するコマンドを実行できます。その後、ctrl+Bを押し、次にDを押すと、終了できます。この時点でコードはバックグラウンドで実行を続けます。
または、tmux new -s <name>を使用して新しいターミナルの名前を指定できます。デフォルトでは 0 から始まる数字です。

tmux lsを使用してバックグラウンドで実行中のターミナルの名前を確認できます。
tmux attach -t <name>を使用してそのターミナルに戻り、実行状況を確認できます。

tmux ターミナルでctrl+Bを押し、次に[を押すと、上下キーでページをめくることができ、q を押すとページめくりモードを終了します。

データ!!!#

データの保存場所#

::: warning
home ディレクトリのスペースは小さいため、データファイルは home ディレクトリに置かないでください。/data1に置いてください。
:::

あまり使用しないファイルは/nasdataに置くことができます。詳細は下記の NAS 説明章を参照してください。

データのバックアップ#

::: warning
公用サーバーでは、自分でデータの安全性を確保する必要があります。
:::

サーバーには rclone がインストールされており、ここでは重要なファイルを NJUBox にバックアップする方法を提供します:

n → カスタム設定名(例えば njubox)→ 56 (seafile) → https://box.nju.edu.cn → 学生番号 → パスワード(最初に y を入力し、その後 2 回パスワードを入力)→ 2fa(そのまま Enter)→ データベース名(そのまま Enter で暗号化されていないすべてのデータベース)→ その他は指示に従ってください。

rclone の一般的な使用方法#

リモートファイルの表示#

image

同期#

初回実行時はすべてのファイル(ソースアドレス)をリモート(ターゲットアドレス)にコピーします。
その後は変更されたファイルと新しいファイルのみがコピーされます。

::: warning
特に注意: 毎回実行後、ターゲットアドレスのファイルはソースアドレスと完全に一致します。ソースアドレスで削除すると、同期を実行した際にターゲットアドレスの対応するファイルも削除されます(rclone copyを使用するとターゲットアドレスのファイルは削除されません)。
:::

image

定期的な同期#

上記の同期コマンドをコピーし、crontabを使用して定期タスクを設定します。具体的にはインターネットで検索してみてください。関連チュートリアルはたくさんあります。

NAS の説明#

::: banner {warning}
NAS も 100% 信頼できるわけではありません。重要なデータは 321 の原則に従ってください(三つのコピー、二つのメディア、一つのオフラインバックアップ)。
:::

群晖からアプリをダウンロードしてください:企業ネットワークドライブ | Synology Drive_プライベートクラウド_データをいつでもアクセス_複数人で共有協力 | 群晖科技 Synology Inc.
または、直接ウェブサイトにアクセスしてください:https://nas.njucite.cn:5001

IP / ドメイン:nas.njucite.cn

アプリにログインすると、home ディレクトリのみが表示されます。このディレクトリは自分だけが見えます。
ウェブログインでは share ディレクトリが見えます。このディレクトリは共有ディレクトリで、各サーバー上の/nasdataにマウントされています。データのサーバー間転送に使用できます。一部のサーバー(s4 と s5)は NAS との間で万兆接続があり、残りは千兆接続です。

::: warning
/nasdataはすべての人が権限を持っています。他の人による誤削除を防ぐために、重要なデータは rclone を使用して設定することをお勧めします。以下のローカルと NAS ファイルの同期に rclone を使用するを参照してください。URL を置き換えることに注意してください。
:::

ウェブサイトで 2 つのディレクトリ内のファイルを移動できます。

image

webdav でマウントすることもできます。webdav アドレス:https://nas.njucite.cn:5006

接続速度をテストするために iperf3 を使用:

image

ローカルと NAS ファイルの同期に rclone を使用する#

上記の手順でローカルコンピュータに設定を作成した後、以前に紹介したrclone copyまたはrclone syncコマンドを使用してファイルを同期できます(ローカルファイルを NAS にアップロードするか、NAS ファイルをローカルにダウンロードする)。

::: warning
特に注意: 毎回実行後、ターゲットアドレスのファイルはソースアドレスと完全に一致します。ソースアドレスで削除すると、同期を実行した際にターゲットアドレスの対応するファイルも削除されます(rclone copyを使用するとターゲットアドレスのファイルは削除されません)。
:::

上級#

以前に入力したコマンドを自動的に補完#

デフォルトのターミナルとしてzshを使用し、oh-my-zshpowerlevel10kzsh-autosuggestionszsh-syntax-highlightingを設定できます。

zsh+oh-my-zsh+powerlevel10k ターミナル設定_powerlevel10k 設定 - CSDN ブログ

または、私自身の設定を直接使用し、以下のファイルを解凍して自分の home ディレクトリに置くだけで済みます。
zshconfigs.tar.gz

GUI 関連#

一部のコマンドはディスプレイがないと表示されますが、他に方法がない場合は GUI を使用する必要があります。以下の 2 つの方法を参照してください。最初の方法は自分のターミナルでコマンドを実行するのに適しており、2 番目の方法は MobaXterm 内で実行することを要求します。前者は追加の設定が必要で、後者はすぐに使用できます。

方法 1#

ローカルコンピュータにMobaXtermをインストールし、X サーバーを開きます。

image

マウスを上に置くと[IP]:[x11port]が表示されます。NAT ルーターの下でない(南大では一般的に NAT でない IP は 114 または 172 で始まり、ルーター NAT 下の IP は一般的に 192.168 または 10 で始まります)の IP とポートを選択し、サーバーターミナルに次のように入力します。

その後、GUI に関連するコマンドを入力し、ローカルコンピュータにポップアップするウィンドウで「はい」をクリックします。

image

方法 2#

直接 mobaxterm を使用して ssh 接続し、GUI 関連のコマンドを実行します。

進捗を表示するコピー#

~/.bashrcまたは~/.zshrcに次のように追加します:

その後、rcp を使用できます。cp のロジックとは完全に同じではなく、2 番目の引数 dst はターゲットディレクトリであり、cp のように名前を変更することはできません。

トレーニング終了 / 失敗後のメール通知#

トレーニングスクリプトの後に以下の Python コードを追加するだけで済みます。

VPN の代替案#

学校の VPN サーバーが不安定な場合は、使用を検討できます。速度も比較的速いです(前提として P2P 接続が成功すること)。

image

能力があれば、Zerotier や OpenVPN サービスを自分で構築することも考慮できます。

Zerotier を使用して私のキャンパス内サーバーと P2P 接続する#

xubiaolin/docker-zerotier-planet - クライアント設定を参照して Zerotier One を設定します(クライアント設定セクションにのみ注意してください)。
planet ファイルとネットワーク ID は、https://nvtop.njucite.cn で確認するか、私に連絡してください。設定が完了したら、私に連絡してアドレスを提供し、認証を完了してください。

以下のアドレスは15ffbcaa44です。

認証が完了したら、再度 zerotier サービスを再起動し、10.128.3.0/24の IP アドレスを取得できるはずです。そして、https://test.nju.do1e.cn/ にアクセスできるようになります。このステップが成功したら、次のステップに進みます。

公開ルーティングを許可#

以下のコマンドは管理者 /sudo権限が必要です。完了後、校外からサーバーと NAS に接続でき、https://nvtop.main.njucite.cn に成功裏にアクセスできるはずです。

ネットワーク ID は、https://nvtop.njucite.cn で確認できます。その後、zerotier サービスを再起動してください。

この方法は、サーバーと NAS が接続できることを保証するだけです。

ノートパソコンが学校に戻った後は、オフにすることをお勧めします。#

Windows

サービスを開き、ZeroTier One を見つけて、起動タイプを手動に変更します。校外では手動でこのサービスを起動します。あるいは、自動に変更し、校内では手動でこのサービスを停止します。

Linux

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。