この人は誰?
おもな履歴
N88-BASIC Visual C++ RUBY
本題
コンペphase1にて。
結果としては、すざくチームは(コンペ運営の方針で?)みんなGPU使いましょうという感じはあり、公式のscriptをある程度のところまで動かせた。
それ以降は主力の足を引っ張らないようあまりGPU動かしていない。なので書けることはあまりない。
時間もないしコンペということを考えると、序盤はともかく、早い段階でチーム内でもっとも知識と経験があるメンバーを探して、いたならその人にリソースを集中させ、それ以外は補佐に回るのが最適解、ということになるのでは。
教育的視点からするとそれはどうなのかという感じではある。
(極端なチームは数人以外全員データ班というのもあったようで、それはどうなのか、という印象。ただその後の経緯を見るとチームとしてはうまくいっていたようなので余程の統率力か何かがあったのか興味深い)
まあしかし、勝たねば。
あとは、コンペの始まる前の知識では、泣く子も黙るたぬきチームの情報などを見ても、(畠山氏に当たる立場の人が疲弊しないためにも)マネージメント担当が超重要で、ここができる人がいないチームは大変なことになりそう、という予想はあったが、
ありがたいことにいろんなタイプの人がいるチームではあったのでそこは困らなかった、気はする。
疲弊という点では、これは避けられそうにないので、とにかく母数を大きく保つ=稼働人数が減らないようにどうにかするしかない気はしていた。脱落者を出さないには?どうする?あまりコンペ記事には出てこなそうだけれどここが一番たいへんなところなのでは。それぞれの事情はあるにしても動かないことにした人の理由は知りようがない。謎。
コンペが始まっても、お互いの知識も分からないのでそもそもssh使えるのかlinuxコマンド知っているのかすら分からず、知らないことを前提に話すのも失礼かも?という遠慮とか、逆にまわりが全員自分より上級者なのでは?と思えたりとか、そのへんの情報共有も難しい。
commandのおさらい
ということで(?)、(おもにlinux)コマンドを見ていきましょう。
コンペのコントロールノードで使ったコマンド、あるいはpsコマンドのログでよく使われていたコマンドなどです。
ps aux
ほかの人が何をやっているか気になりますね。ならない?
top
なにが重い処理なのか
exit
終了。
tmux
sshを切断しても、あるいは(むしろこちらが大問題?)突然接続が切れても、tmux上でsrunなどしてからデタッチ、アタッチするなどすればプロセスは残るので作業を継続できる。windowsで使うのかコントロールノードで使うのか計算ノードで使うのか。ややこしくならないようにしないと。
screen
これはもう古いらしいのでtmuxを使いましょう、と今回知った
srun
GPUを実際に使うコマンド。パラメータで何をやっているかヒントが分かる、かも
nvidia-smi
GPUの状況をチェック。ただしコントロールノードではGPU使わない環境なので見れない。どうするの?
ssh osk-gpu84
ということで、自分が実行している計算ノードならコントロールノードで別のターミナルからsshで繋げられるのでnvidia-smiなどで状態をチェックできる。
設定は普通は.sshにある、ありました。
あとで思えば運営の用意したスクリプト内で実際に呼んでいました。読んでいたのに。使いこなしているメンバーを見て呑み込みの早さに驚愕
tail -f
継続して出力されるログファイルをチェックなど
watch
同様に、コマンド指定で定期的に状況をチェック
grep
検索。他のコマンドと組み合わせて
awk
sed
sort
uniq
sleep
xargs
python
おなじみの
ls
claude
bash
scancel
GPUが足りず、都合により他人のジョブなどを止める。いろいろ問題に…
vim
vscodeがダメならvimでがんばる、あるいはローカルで編集してscp?
vscode
しかし結局これが現実的か。終盤はvscode上でssh上でGPUを動かすのを数人が交代で実行する状況を画面共有で見守るという状況。見るだけでも初心者には参考になるのでぜひ上級者の皆さんやりましょう。処理を回すだけでも忙しいのに共有なんてやってられないよ、となると思いますが、まあそういわずに
crontab
コントロールノードはコンペ参加者だけでも約360人なので重い処理は実行してはならない。
いらないジョブをキャンセルするためにこれを使っていたチームもあるのでは。
sudo
使えない。しょうがないね
singularity
dockerは使えない、ということだがsingularityは使える、という情報は確かに公式にあった。チームでは使わず。
あとから思えばこれもこれも公式のここに書かれていたんだな、という情報はいろいろあった。
PowerShell
windowsならPowerShellからsshで繋ぐ。あるいはvscodeで運営の指示に従った設定(同期処理が重いので切る)にしてから使う。
今回、FortiClient VPNというソフトを使うんですがスマホ用もあったのでsshは使ってみました。移動中の状況チェックくらいなら使えるのでは。いや上級者はこれでも知恵を使えばいろいろできるのかも?
それぞれのコマンドの使い方はしかしもうchatGPTなどの生成AIに聞けばよい、となってしまう、便利ですね。
実際、時期的にも、コンペの前と後で聞き方も変わり仕事の進め方もだいぶ変わりました
(ということで省略)
sshで繋いで、というだけでもある種の難易度は高いと思うけど多分ひとによっては生成AIを頼りにして解決してしまうので「だれがどう初心者なのか」が分かりにくくもあり
phase1を終えて
似たようなコンペの参加歴がある人のいるところといないチームでの知識の差が大きそうで、そういうところで差がつくのは嫌だなあという気持ちはあり。
とはいえそう単純でもないんだなという結果になったので、あるはずの不満も中和されたともいえるのかも。
で、本題はここからなんですが、
続きはWEBで?…
本プロジェクトは、国立研究開発法人新エネルギー・産業技術総合開発機構(以下「NEDO」)の「日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」における基盤モデルの開発プロジェクトの一環として行われます。
動き出さないチーム01
時間を戻します。
運営による標準script(これは使わなくてもよい)が公開され、ようやくGPUが利用開始になった日、psコマンドで様子を見ていると12のそれぞれのチームが動き出す中、動きだす気配がないチームが2つあったんですよ。ひとつはしばらくすると動きがあった。しかし01が動かない。やっぱりチームによって事情は違うし場合によってはsshってなに?みたいなチームが絶対ないとも言えない状況なので、なんなら助けが必要なのかも、と確認のため名簿を見てみたら、まあとんでもないというか、逆に界隈では有名な人が参加しているチームらしいと分かったので、どういう作戦だろうと気になり。運営のコードなんて使わなくても充分勝算ありってことかな。とりあえずいつ動き出すか知りたくなったのでpsコマンドを定期的に実行したい。
そんなときに便利なのがcrontabですよ、お客さん。…1時間おきに目覚しを設定してコマンドを実行する必要はないのです。面倒なことはコンピュータにやらせるのです…。いまとなってはAIエージェントにやらせるならそれでもいいですか…
たしか二日目の夕方に動きがありました。やっと動いたよ。手動でやらなくてよかった。
二人同時に動き出したので、やはりチームの方針があって動かしてる、動かしていないんだろうなと。