#本記事の概要
まっっっっっったくと言っていいほどPCの知識がない学生が,TSUBAME3.0と格闘した記録.
もし似たような境遇の学生がいたら,参考にしてくれることを祈って更新していきたい.
なお,最も参考にすべきは公式の使い方ガイドや利用の手引きです.
#基本的な使い方(2021/09/15)
##SSHの設定
自分のPCのホームディレクトリ直下に.ssh
ディレクトリがあることを確認.なければ作る.(~/.ssh
という位置になるように.)
その後,ssh-keygen
コマンドでrsa形式の鍵を作成する.
#rsa形式で"tsubame_rsa"という名前を指定して鍵のペアを作る
ssh-keygen -t rsa -f tsubame_rsa
パスワードは好きなようにつけておk.なくても可(エンター連打してるとパスなしになる).
これで鍵ができた..ssh
ディレクトリ内にtsubame_rsa
とtsubame_rsa.pub
があることを確認.
tsubameポータルを開き,「SSH公開鍵の登録」からファイルの中身のコピペまたはファイルアップロードによって公開鍵(.pub
がついてる方)を登録する.
これで繋げるようにはもうなっているが,もっとラクにsshする方法が以下.
-
.ssh
内部にconfig
ファイル(拡張子なし)を作る -
config
内を次のように書き換える
Host tsubame #ログインに使うショートカット.任意でいいが,長くしすぎずわかりやすいものが吉
Hostname login.t3.gsic.titech.ac.jp
User 01B34567 #学籍番号
TCPKeepAlive yes
ServerAliveInterval 120
ServerAliveCountMax 30
ForwardX11 yes #Xquarzを使いたい場合は書く.ローカル側にもインストールが必要で,まだだとエラーが出るので,この行は基本なくていいかも.
IdentityFile ~/.ssh/tsubame_rsa #秘密鍵の絶対パス
以上の操作により,たった10文字程度でsshログインが可能に!
ログインコマンドは以下.
ssh tsubame #"tsubame"の部分は,configファイル中のHostで指定した文字列
##ジョブの投げかた
大きく2通りの方法がある.
###ログインノードからジョブを投げる
まずジョブスクリプトを書く必要がある.雛形はこんな感じ
- bash(
#!/bin/bash
) - ジョブ名をGaussian_jobに指定(
#$ -N Gaussian_job
) - h_nodeを1つ(
#$ -l h_node=1
) - 1時間(
#$ -l h_rt=1:0:0
) - Gaussianモジュールをロード(
module load gaussian16/B01
) - Gaussianでfilename.comを実行(
g16 filename.com
)
のスクリプト例
#!/bin/bash
#$ -cwd
#$ -N Gaussian_job
#$ -l h_node=1
#$ -l h_rt=1:0:0
#$ -V
. /etc/profile.d/modules.sh
module load gaussian16/B01
g16 filename.com
このスクリプトのファイル名を"sample.sh"として保存したあとは,以下のワンライナーでお手軽にジョブが投げられる.
sample_groupグループから(-g sample_group
)実行する例
qsub -g sample_group sample.sh
###計算ノードに入って直接コマンドで実行する
- sample_groupグループから(
-g sample_group
), - q_coreを1つ(
-l q_core=1
), - 10分間(
-l h_rt=0:10:0
)
で計算ノードを利用する場合のコマンド例
qrsh -g sample_group -l q_core=1 -l h_rt=0:10:0
これで計算ノードに入った後は,ローカルマシンと同じように動かしていける
##投げたジョブのあれこれ
・投げたジョブの状態を確認
以下のコマンドでジョブの状態を確認できる.
qstat
何も表示されない場合は,ジョブが終了している.カレントディレクトリに標準出力である(指定したジョブ名).o(ジョブID)
ファイルと,標準エラー出力である(指定したジョブ名).o(ジョブID)
ファイルができている.
・投げたジョブを削除
上記のqstat
で消したいジョブのIDを確認したあと,以下のコマンドで消せる.
qdel 消したいジョブのID
・終了したジョブの終了理由を確認
qacct -j 確認したいジョブのID
詳しくはここを参照.
##基本のモジュールのロードの仕方
coming soon
##ファイルのやり取り
scpを使うのが楽そう.
sshでログイン用のショートカットコマンドを設定しているのなら,以下のように送受信可能.
ちなみに操作はローカルのターミナルでやるよ
ローカルマシン→リモート
- configで
tsubame
というのを登録してありssh tsubame
とすればログインできるようにしてあり - ローカルマシンのカレントディレクトリにある
test.py
を - リモートマシンのホームディレクトリに移動したい
場合のワンライナーが以下.
scp test.py tsubame:~/
リモートマシン→ローカル
- configで
tsubame
というのを登録してありssh tsubame
とすればログインできるようにしてあり - リモートマシンの
~/hoge/fuga/
以下にあるbar.py
を - ローカルマシンのカレントディレクトリに移動したい
場合のワンライナーが以下.
scp tsubame:~/hoge/fuga/bar.py ./
#以下,さらに必要になった情報を追記していく部分
Anacondaを使う(2021/09/15)
このサイトを参考にしたのでこっちを読むことをお勧めするが,本記事は自分用の備忘録として書き留めておく.本記事のURLだと2021.5バージョンが入ることになる.
以下のコマンドを打ち込んでいき,インストールが完了したら一度TSUBAMEからログアウトし,再度入ればConda環境の出来上がり.
mkdir anaconda-install
cd anaconda-install
curl -O https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
chmod +x Anaconda3-2021.05-Linux-x86_64.sh
./Anaconda3-2021.05-Linux-x86_64.sh
###Anacondaの基礎コマンド
-
conda環境の一覧を表示
conda info -e
-
作成済みのconda環境に入る
source activate 環境名
またはconda activate 環境名
-
現在の環境に入っているライブラリの確認
確認したい環境中でconda list
,または任意の環境中でconda list -n 環境名
特定のライブラリを検索したい場合はconda list ライブラリ名(部分一致でも可)
-
新しいライブラリのインストール
まずはconda search ライブラリ名
でAnaconda上に対応するライブラリのバージョンがあるか確認.
現在入っているpythonとの互換性があるバージョンを確認し,conda install ライブラリ名=バージョン
でインストール -
作成した環境の削除
conda remove -n myenv --all
でmyenv
環境を削除できる.
###qsubするときに自前のConda環境のパッケージを利用して欲しい
投げるスクリプトに以下のように書き足せばおk
my_env
環境でsample.py
を実行したい場合,例えばこんな感じのスクリプト
#!/bin/bash
#$ -cwd
#$ -N Sample
#$ -l f_node=1
#$ -l h_rt=0:10:0
#$ -V
. /etc/profile.d/modules.sh
module load cuda/11.2.146 cudnn/8.1
source ~/.bashrc ##ここと
conda activate my_env ##ここでConda環境を立ち上げる
export PYTHONPATH="/hoge/fuga:$PYTHONPATH" ##ここは本サブセクションとは関係ないが,sample.py内でインポートしたいモジュールに自分で作ったものがある場合,ここでパスを通してやらないと死ぬ
python3 ./sample.py
###RDKitを入れたい(2021/09/15)
RDKitを入れた環境を作りたい.ていうかそのためにanaconda入れた.
というわけで環境の作り方の紹介.
python3.7でRDKitを入れた環境’myenv’を作るコマンドは以下.
conda create -n myenv python=3.7
conda activate myenv
conda install -c rdkit rdkit -y
###xgboostとやらの古いバージョンを入れたい(2021/09/16)
再現したいGithubコードの環境に合わせるべく,xgboost1.0.2とやらを入れてみようとなったのだが,python3.7.11環境下(上の手順で作ったもの)でconda search xgboost
してみたら
(myenv) hogehoge@login0:~> conda search xgboost
Loading channels: done
# Name Version Build Channel
xgboost 1.3.3 py36h06a4308_0 pkgs/main
xgboost 1.3.3 py37h06a4308_0 pkgs/main
xgboost 1.3.3 py38h06a4308_0 pkgs/main
xgboost 1.3.3 py39h06a4308_0 pkgs/main
あれっっ欲しいバージョンがないぞ........
となってしまったので,ググった結果このコマンドで解決しました↓
conda install -c conda-forge py-xgboost=1.0.2
何が何だかわからないおまじないがついているけど,上手いことはいったっぽいので,ヨシ!
(2021/09/22 追記)
-c
オプションはチャンネルを指定してインストールするためのものだそう.今回ならconda-forge
チャンネルで用意されているパッケージを使ってインストールさせてもらっているようだ.ありがたや〜
###tensorflow-gpu2.5.0を入れたい(2021/09/21)
これは解決しているのかわからないので真似するのは非推奨.
普通にconda install
でどうにかなるかと思いきや,目的のバージョンがなくてpipすることに.
実行したのは以下.tensorflow-gpuの2.5.0が欲しかっただけなのだが,誤ってtensorfloeの2.5.0を初手でインストールするアホさ加減.多分いらない工程.(何が違うのかよくわかってない顔)
pip install tensorflow==2.5.0
pip install tensorflow-gpu==2.5.0
これでうまく入ったんじゃないかなあ.結果は以下の通り
$ conda list tensorflow
# packages in environment at hoge
#
# Name Version Build Channel
tensorflow 2.5.0 pypi_0 pypi
tensorflow-estimator 2.5.0 pypi_0 pypi
tensorflow-gpu 2.5.0 pypi_0 pypi
まあうまくいったと思いたいですね.
anacondaで全部インストールできると思ってたのでpipのお世話になると思ってなかった.パスとかうまく通ってるんだろうか...