| English |
以下の中から選んでください。
最後にハイブリッド発表会で発表する。
※他の人と協力してやっても良い。
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のインストール方法はこちら
研究室のネットワークにVPN接続をしてください。
ユーザ名・パスワードはslackで。
※MacでVPNを使うために「サービス順序の設定」をする必要があります。参考ページ
GPUの載ったマシン一覧がこちら。
Name | OS | GPU | GPU number |
---|---|---|---|
slime | Ubuntu 20.04 | Geforce GTX Titan X | 3 |
drakee | Ubuntu 18.04 | Quadro P6000 | 3 |
wyvern | Ubuntu 20.04 | Quadro P6000 | 3 |
golem | Ubuntu 20.04 | GTX1080 | 4 |
troll | Ubuntu 20.04 | RTX A6000 | 1 |
mimic | Ubuntu 22.04 | Quadro P6000 | 1 |
kanriというログインノードにSSH接続して使ってください。("-Y"オプションをつけるとX11転送ができて画像を表示したりできます。)
$ ssh -Y <your name>@kanri
ユーザ名はメールアドレスの.を-(ハイフン)に変更したものです。
※デフォルトのパスワードはユーザ名と同じにしてあるので、kanriにログインした後、passwd
コマンドで変更してください。
$ passwd
ジョブスクリプトサンプル
#!/bin/bash
#AKBATCH -r any_1
#SBATCH -N 1
#SBATCH -J job_name
#SBATCH -o slurm-%J.out
python CNN.py
説明↓
#!/bin/bash
#AKBATCH -r any_1 ←{ノード名 or any}_{GPU数}。ak-rms`コマンドを実行して詳細を確認できます(anyはどこでもいいから確保です)
#SBATCH -N 1 ←ノード数。今回は1ノードのみなので変更しないでください
#SBATCH -J job_name ←ジョブ名
#SBATCH -o slurm-%J.out ←出力ファイル名
以降実行したいコマンド(いくつでもOKです)
python CNN.py
#AKBATCH -r
で指定します。リソース名一覧はak-rms
コマンドで確認できます。
Resource Name System (ak-rms)
- Available resources
+-------------------+--------------+-------------+-------------+----------------------------------+-------+
| resource_name | partition | CPU threads | Host memory | GPU | nGPUs |
+-------------------+--------------+-------------+-------------+----------------------------------+-------+
| any_1 | any | 4 | 20 GB | slime_1/drakee_1/wyvern_1/golem_1 | 1 |
| any_2 | any | 8 | 40 GB | slime_2/drakee_2/wyvern_2/golem_2 | 2 |
| any_3 | any | 12 | 60 GB | slime_3/drakee_3/wyvern_3/golem_3 | 3 |
| slime_1 | slime | 4 | 20 GB | Geforce GTX Titan X | 1 |
| slime_2 | slime | 8 | 40 GB | Geforce GTX Titan X | 2 |
| slime_3 | slime | 12 | 60 GB | Geforce GTX Titan X | 3 |
| drakee_1 | drakee | 4 | 20 GB | Quadro P6000 | 1 |
| drakee_2 | drakee | 8 | 40 GB | Quadro P6000 | 2 |
| drakee_3 | drakee | 12 | 60 GB | Quadro P6000 | 3 |
| wyvern_1 | wyvern | 4 | 20 GB | Quadro P6000 | 1 |
| wyvern_2 | wyvern | 8 | 40 GB | Quadro P6000 | 2 |
| wyvern_3 | wyvern | 12 | 60 GB | Quadro P6000 | 3 |
| golem_1 | golem | 4 | 15 GB | GTX1080 | 1 |
| golem_2 | golem | 8 | 30 GB | GTX1080 | 2 |
| golem_3 | golem | 12 | 45 GB | GTX1080 | 3 |
| golem_4 | golem | 16 | 60 GB | GTX1080 | 4 |
+-------------------+--------------+-------------+-------------+----------------------------------+-------+
$ akbatch job.sh
$ akrun any_1
説明↓
$ akrun {ノード名 or any}_{GPU数}
$ sinfo
$ squeue
ディープラーニングのモデルの学習とかは時間がかかります。コマンドを走らせたらそのまま放置してログアウトしたいですね。
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 kanri:~/<ディレクトリを置きたいパス/
こうすると、kanriの"~/ディレクトリを置きたいパス/"にtmpdir
が発生します。
tmpdir
以下のあるファイルを編集して、再びrsync
をすると、tmpdir
全体ではなく変更されたファイルだけが送られます。
つまり、これはscp
等の単なるファイル転送とは違って「同期する」という感じの作用になっています。
もし下記を実行すると、tmpdir
ではなくtmpdir
以下のファイル群が直接"~/ディレクトリを置きたいパス/"以下に置かれるという違いがあるので注意。
$ rsync -avz tmpdir/ kanri:~/<ディレクトリを置きたいパス/
エディタはVisual Studio Codeを使うと良いです。 vscode上でSSHもでき、リモート環境での作業が捗るらしいです。
金崎はEmacsしか使えませんが。
Google scholarを使いましょう。キーワードも、論文タイトルも、人も検索できる!
Google scholarで有名な論文誌/国際会議を調べることも可能。
左上のメニューバーをクリックしてMetricsを選択するとh5-indexの高い順に論文誌/国際会議が出てくる。 Categoriesで絞って興味のある分野の論文誌/国際会議を特定すると便利かもしれない。