| English |
以下の中から選んでください。
最後に発表会で発表する。
※他の人と協力してやっても良い。
※流行りのLLMやVLMを使っても良い。例:Google Colab で LLaVA-1.5 を試す(ランタイムタイプがT4の場合、llava-v1.5-7b
でないと動かないかも)
※金曜日は研究室訪問推奨日。
Pythonで動くDeep Learningフレームワーク。学術研究では世界で最も多く使われているフレームワーク(だと思う)。
PyTorchのインストール方法はこちら
オススメはAnacondaで入れたPython 3を使うこと。Anacondaのインストール方法はこちら
※AnacondaのPythonを使えば、root権限のない共用計算機でも好きなライブラリをインストールして使える!
(sudoをつけずに、普通に$ pip install <パッケージ名>
でOK)
PyTorch本家ページのTutorialsリンクに行くととてもたくさんある。分かりやすいのはこの辺↓
IPython Notebookを使っても良いが、 「View on GitHub」リンクに飛んでサンプルコードをブラウザで表示し、コード右上の「Raw」をクリックして全選択->コピペで自分のコード(.py)を作って実行しても良い。
$ nmcli device wifi list
$ sudo nmcli device wifi connect aklab-wifi-5G password [パスワード] ifname wlan0
ターミナルを開いて
$ source /home/agilex/agilex_ws/devel/setup.sh
$ roslaunch limo_base limo_base.launch
別のターミナルを開いて
$ source /home/agilex/agilex_ws/devel/setup.sh
$ roslaunch limo_bringup limo_teletop_keyboard.launch
かなり速いので速度を落としてから動かしたほうが良い。
GitHubレポジトリをクローンしてくる。
$ git clone https://github.com/agilexrobotics/ugv_gazebo_sim
$ cd ugv_gazebo_sim
あとはこちらのドキュメントに従って動かす。
どのパソコンでやってもOK。ただし、Ubuntu 18.04で、ROS Melodic desktop fullをインストールしている必要がある。
ROS Melodic desktop fullのインストール方法はこちら
ローカルの環境においてホームディレクトリ直下に.ssh
ディレクトリがあるか確認する。
$ ls -la
.ssh
ディレクトリが見つからなかったら新たに作成
$ mkdir .ssh
.ssh
ディレクトリへ移動
$ cd .ssh
ssh-keyを作成していない場合、ssh-keyを作成。(4096bit長の方が安全と聞いたので私は4096bit長にしています。)
rsa
キーペアを4096bit長で作成する場合
$ ssh-keygen -t rsa -b 4096
一回Enterを押すとキーペアの作成場所を聞かれる。デフォルトでは~/.ssh
。気にしない方はEnterを押す。
次はパスフレーズを聞かれる。これはssh接続する際にパスワードを設定することができ、そのパスワードのことです。 なしでよい場合Enter。 パスフレーズを設定したい場合はパスフレーズを入力してEnter。
パスフレーズの確認を求められた後ssh-keyが作成される。
これの公開鍵の方(今回の場合~/.ssh/id_rsa.pub
)の方をクラウドへアップロードする。
東工大ポータルへログイン。
「TSUBAMEポータル」を開く。
左のメニューより「SSH公開鍵登録」をクリック。
ここに先ほど作成したid_rsa.pub
をアップロードorコピーペーストして追加する。
学籍番号が21M12345の場合
$ ssh 21M12345@login.t4.gsic.titech.ac.jp
でログインできます。
ssh接続を楽にするためにconfigファイルを設定する。
$ vim ~/.ssh/config
以下を追記(学籍番号が21M12345の場合)
Host tsubame
hostname login.t4.gsic.titech.ac.jp
User 21M12345
これで
$ ssh tsubame
でログインできるようになります。
ログインするとlogin0かlogin1のどちらかのノードにいる状態になります。 これらのノードは全てのユーザーの共用スペースのため、ここで重い処理を行っていると中断させられたり、注意されたりします。 何かを実行させたいときは基本的に計算ノードを用いることになります。
ジョブスクリプトというシェルスクリプトを実行する形でジョブをTSUBAMEに投入します。
以下はジョブスクリプトの説明です。
#!/bin/sh
#$ -cwd →カレントディレクトリでジョブを実行
#$ -l f_node=1 リソースタイプの指定(必須)。詳細は後述。
#$ -j y →標準エラー出力を標準出力ファイルに統合
#$ -l h_rt=05:00:00 →経過時間指定(必須)
#$ -o output/o.$JOB_ID →標準出力ファイル名の指定。${JOB_ID}変数にはジョブのIDが格納されている。
python ~.py等何か実行したいスクリプト
以下はジョブスクリプトのサンプルです。
#!/bin/sh
#$ -cwd
#$ -l f_node=1
#$ -j y
#$ -l h_rt=05:00:00
#$ -o output/o.$JOB_ID
python sample.py
$ qsub -g グループ名 (-ar 予約番号) -o 標準出力ファイルの相対パス シェルスクリプト名.sh
-arオプションは予約している場合のみ記述
$ qstat
$ qdel ジョブのID
$ t4-user-info compute ars
ディープラーニングのモデルの学習とかは時間がかかります。コマンドを走らせたらそのまま放置してログアウトしたいですね。
screenコマンドを使うとその辺が便利にできます。
SSH先のターミナルでたくさんのタブを開きたいときに便利です。
.screenrc
というファイルを作り、下記を書いておくと見やすくなる。startup_message off
vbell off
defscrollback 10000
hardstatus alwayslastline "%{= cd} %-w%{= wk} %n %t* %{-}%+w"
参考:.screenrcにこれだけは設定しとけっていうオススメ設定$ screen
$ python train.py ...
Ctrl+A c
Ctrl+A n
$ exit
Ctrl+A d
$ ps a
もしくは、top
コマンドやhtop
コマンドでCPUがちゃんと使われていることを確認すると良い。$ nvidia-smi
$ screen -x
だいたいこんな感じです。
なお、時間のかかるコマンドを走らせるときはtee
コマンドでログをファイルに出力しておくと良いでしょう。たとえば、
$ python train.py | tee log.txt
ローカル環境でコーディングして、それをrsync
で共用計算機に送るのは一つの賢い方法かもしれません。
ディレクトリ毎やってしまえば良いと思います。
たとえば、送りたいディレクトリの名前がtmpdir
の場合はこんな感じ:
$ rsync -avz tmpdir ユーザ名@login.t4.gsic.titech.ac.jp:~/<ディレクトリを置きたいパス/
こうすると、TSUBAMEの"~/ディレクトリを置きたいパス/"にtmpdir
が発生します。
tmpdir
以下のあるファイルを編集して、再びrsync
をすると、tmpdir
全体ではなく変更されたファイルだけが送られます。
つまり、これはscp
等の単なるファイル転送とは違って「同期する」という感じの作用になっています。
もし下記を実行すると、tmpdir
ではなくtmpdir
以下のファイル群が直接"~/ディレクトリを置きたいパス/"以下に置かれるという違いがあるので注意。
$ rsync -avz tmpdir/ ユーザ名@login.t4.gsic.titech.ac.jp:~/<ディレクトリを置きたいパス/
エディタはVisual Studio Codeを使うと良いです。 vscode上でSSHもでき、リモート環境での作業が捗るらしいです。
金崎はEmacsしか使えませんが。
$ sudo wget -O- http://neuro.debian.net/lists/xenial.us-ca.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
$ sudo apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9
$ sudo apt-get update
$ sudo apt-get install -y singularity-container
$ sudo singularity build -s ubuntu.img docker://ubuntu
$ sudo singularity shell --writable ubuntu.img
これでイメージの中にroot権限でログインできたので、色々なパッケージをインストールして環境を構築する。たとえば…
# apt install cowsay
自分のユーザアカウントを作成する
# adduser <your name>
パスワードを入力する。他の項目は全て何も入力せずEnterキーを押すのみでOK。
singularityのイメージからログアウトし、自分のユーザアカウントで再度ログインする。
# exit
$ singularity shell ubuntu1804.img
ここでls
を実行してみると分かるように、/home/
以下のファイルはローカルマシンと共有している。singularityのイメージの中の自分のユーザアカウントはsudo権限を持たないため、root権限で何かをインストールする場合は、再びログアウトしてrootでログインして行う。
$ rsync -avz ubuntu.img ユーザ名@login.t4.gsic.titech.ac.jp:.
$ singularity exec --nv ubuntutest.img/ /usr/games/cowsay hoge
これで、共用計算機にはインストールされていないcowsayというコマンドが使えるようになる。
次に、自分のユーザアカウントでログインする。
$ singularity shell ubuntu1804.img
ここでls
を実行してみると分かるように、/home/
以下のファイルは共用計算機と共有している。
If you install the libraries from the nvidia driver (like the contents of this run file) into your container than you can use the GPU on the host system. But ONLY if the host system has the exact same driver installed.
Google scholarを使いましょう。キーワードも、論文タイトルも、人も検索できる!
Google scholarで有名な論文誌/国際会議を調べることも可能。
左上のメニューバーをクリックしてMetricsを選択するとh5-indexの高い順に論文誌/国際会議が出てくる。 Categoriesで絞って興味のある分野の論文誌/国際会議を特定すると便利かもしれない。