generated at
LLMサマースクールコンペの感想
(thanks TaroNakasendoさん)


感想を書くnishio
無料の演習環境があるのは多くの人にとっては良いことだと思う
50GPU時間が無料で全員に配られる、太っ腹
125GPU時間使った、ほくほくwogikaze
なんだけどあんまり適応できなかった
50クレジットしかなくて追加手段もないものがめりめり減っていく状況のストレス
8GPUまで試せるけど30分で4クレジット無くなるのの精神的プレッシャーが辛い
こうなりそうだったので、ずっと別環境でやってました(たまたま環境があったのもあり)yosider
無料で使っておいて文句を言うのはアレだけど、NVIDIA L4なかなか遅いな…yosider
Google Colabの従量課金を初めて使った
40GB VRAMのA100を1時間150円で使える
演習環境の2GPU設定が大体同じくらいの性能
と考えると、演習環境の無料クレジットは一人3〜4000円もらったようなものか
途中で一定以上の基準を満たした人に追加で75GPU時間が配られていた、太っ腹
自前のハードウェアや、演習環境と比べて「並列で使える」のが良い
ある実験をしていて、何か思いついたことがあると、別の実験をしたくなる
一度に一つしか実験できない環境では、一つ目の実験が終わるまで待たなければならない
Google Colabなら多分4つまで並列で実験できる
「僕が実験に集中できる時間」は限られてるので思いついた実験を並列で走らせられるのは「僕の時間の使用効率」を高めた
1000円ずつ追加できるので、うっかり寝落ちしても1000円無くなるだけで済むのも良いところ
Google ColabのUIは素晴らしい
特にメモリとVRAMの使用量がグラフでサイドパネルに出せるのが良い
「あれ?モデルがGPUに乗ってないぞ?」という気づきが得られる
VRAMに乗るはずのモデルが、さっきは乗ってたのに、今は乗ってないぞ?というハプニングに気づける
これに気づかないと「あれー、さっきは1時間で終わったのに、今回はまだ終わってないなー」みたいな状態に陥ってしまう
「予想と違う振る舞いに素早く気づけること」は大事
JupyterのUI嫌いなのでVSCodeからsshして使ってたwogikaze
今回最終提出物としてipynbが求められていたのですごく使うことになったのだけど、これは良いものだと思った
ついつい慣れた方法で「Jupyter Notebookで作業するのは不安だし混乱するからローカルにファイルを置いてgitで管理しよ」と思ってしまったが、振り返って考えるともっとNotebookに寄せてもよかった
良いところ、その1、タクスキューとしての振る舞い
何か大きな処理を走らせるとき、ローカルの開発のメンタルモデルだとそれはプロセスになりがちなわけだが、その場合「そのプロセスが終わったらこの処理をして」と後からやる方法はあまりわかりやすくない
Notebookなら「セルを追加して実行しておく」だけ
プロセスが分かれている場合と違って名前空間にアクセスできるのも良いところ
「あっ、この変数の値を保存するコードにしとけばよかった!」的なのを後付けで保存できる
実行中のスクリプトを中断させて変数の値を見たりできるのも良い
pdbで実行してる場合と比べると再開できないって問題があるけど。
こういうのもあるっぽいyosider
VSCodeではPythonデバッガと連携できるので、自分は普段はそっちyosider
出力がデフォルトで保存される
ローカルのスクリプトで開発してて、printで表示したものって、teeとかでファイルに保存してない限り後から振り返りたくなっても行方不明になりがち
もちろんloggingとかでファイルにログを書いてtailとかで読めばいいんだけどね
そういうことを考えなくてもprintもエラー時のスタックトレースも全部まとめて「その時に実行したコード」とセットで管理されるのが良い
この特徴のためには実行中に書き換えないことが必要
いじりたくなったら別名保存して別のカーネルにつなげば良い
「別名保存」がgitでブランチを作ることに相当する
ファイルシステム
ブラウザ上で動かすのは永続化とかが不安になるところ
Google Driveをマウントすれば良い
Github CopilotみたいなことをGoogle Colab上でできる

演習
HuggingFaceからモデルを取ってきてプロンプトを入れて使うサンプルコード(スターター)が提供される
とりあえずそれを動かす
ここでこけてる人もいる、僕もこけた
助け合いSlackがあることによって典型的なハマりパターンは誰かが踏んで解決される
ファインチューニングをするサンプルコードも提供される
「どの程度良くなったか」を判断するサービスが提供されて数百人で同じ基準で「良さ」を比べることが可能になってたのがすごい
「こうするとよくなると思う」という未検証のアイデアを語る人もいる
が、スコアという客観的事実は揺るぎない
Slackで語らずに淡々とハイスコアを更新している人もいる
役に立つコードをどんどん提供してくれる人もいる
質問する人と答える人といる
質問してスルーされる人もいる
「何を言ってるのかわからない」質問がある
おそらく当人も何がわかってないのかがわかっていないので、LLMに対応してもらえると良さそう基素

それまで講義の演習をあまりやっていなかったが、コンペで自分で実装する段階になって有用さが身にしみたyosider
むしろ第1回でこのコンペを開始した方が良いのかもwnishio
演習あまりどころか0でやったwogikaze

基本的な戦略
一応スコアに従ったゲームをするが、スコアがKPIではないと思っていた
僕のKPIは「なるべくたくさんの経験をすること」
「将来、自分が作りたいものを作る上で必要になった時に役に立つ知識を獲得すること」が目的
なのでスターターコードを動かした後「たとえこのような改善の手段があります」を愚直にローラーした
具体的には目的のデータでファインチューニング済みのモデルが発見されて、それを使うだけで性能が爆上がりすることが明らかになったが、それでも自前のファインチューニングはやった
予想通り、自前のファインチューニングであまり性能がでないな、ということを確認してから最終提出ではチューニング済みのモデルを使うことにした
というのは「誰かが自分の目的にあうファインチューニングをしてくれてるのをたまたま発見したからそれを使いました」では将来の自分のできることが増えないから
途中から(?)優秀者評価のデータがリーダーボードのデータとは別になったので、リーダーボードのデータにfine-tuningされたモデルより、見た感じよりまともな要約をするモデルに変えたyosider
fine-tuning済みのモデルを使うのが最強という状況を回避して工夫を促そうという運営の意図もあるのかも
僕は逆に、最初から「最終スコアは別のテストデータ」と勘違いしてたnishio
後から自分の理解と同じ運用に変わった
「最終スコアはリーダーボードのデータを一部に含むテストデータ全体」と思ってた(あってるかは不明)yosider
データ増えたら再実行の時間も増えちゃうから、大体同じくらいの分量になるんじゃない?nishio
たしかに、データ増えると困りそうyosider
特筆することはあんまりないなぁ、試行回数を増やしてるだけ
本人は気づかないというパターンかも
タスクごとに「何番めのタスクか」「開始時刻」を表示するようにした
どれくらい時間が掛かっていて、どれくらいで終わるのかわかるように
終了時にビープをならす
エラー時にもなって欲しいけどそこまでは実装に手が回らなかった
数えたらスコアのついてる提出は25件あった
最終的にそれぞれの試行の良いものを集めて提出した
「要約」と呼ばれているタスクが要約ではないことには気づいた
テストに使われるデータのサンプルを眺めて要約を試みたが、そもそも入力に含まれてないデータが「要約」出力に含まれている
これは「ニュース記事の2段落目以降を入力して、1段落目を生成するタスク」だと思った
そんなデータでいいんかい!と思った
そうなのかyosider
解釈ですnishio

> {
> "id": 19,
> "task_type": "summarization",
> "text": "ムーサ・ウカビル容疑者 スペインのカタルーニャ警察によると、バルセロナ事件に関与した疑いのムーサ・ウカビル容疑者は、バルセロナ襲撃の約8時間後にカンブリスで警察に射殺された一人だったという。容疑者はカタルーニャ北部ジロナ出身のスペイン国籍で、17歳だったとみられる。警察は後に、バルセロナ襲撃に運転手は逃亡中だと発表。地元メディアは、これはすでに指名手配されているユネス・アブーヤクーブ容疑者(22)と伝えている。 ウカビル容疑者らはカンブリスでもワゴン車で歩行者をはね、女性一人を死亡させたほか、6人にけがをさせた疑い。 調べによると、歩行者をはねた後に横転した車から出た容疑者らを、一人の警官が射殺した。容疑者の一人はナイフを手にしていたとされる。自爆ベルトのようなものを身に着けていたが、後にこれは偽物だと判明したという。 警察がウカビル容疑者と共に指名手配したサイード・アーラア容疑者(18)、モハメド・ハイチャミ容疑者(24)も、カンブリスで死亡した4人に含まれるという。指名手配した中では、ユネス・アブーヤクーブ容疑者(22)のみ、行方が分かっていない。ウカビル容疑者以外は、モロッコ出身という。 左から、ウカビル容疑者、アーラア容疑者、ハイチャミ容疑者、アブーヤクーブ容疑者。左3人は死亡。アブーヤクーブ容疑者は行方不明 ウカビル容疑者は、兄の身分証明書を使い複数の車両を借り出したとみられる。バルセロナ襲撃で使用されたワゴン車に、兄の身分証が残されていた。また逃走用に用意したとみられる別のワゴン車が、バルセロナ北約80キロにあるビック市で発見された。 捜査当局は、バルセロナとカンブリスの襲撃を、カンブリスから西南約90キロのアルカナルで16日夜に起きた民家爆発と結びつけている。民家爆発では一人が死亡した。当局は容疑者らが爆発物を作ろうとしていたとみて、さらに高度な手法による攻撃を計画していた疑いを調べている。 バルセロナのワゴン車襲撃 現場にいた人たちは 一連の事件に関連して、ほかに4人が逮捕されている。アルカナルの民家爆発後に一人と、バルセロナ襲撃後に、バルセロナ北約100キロにあるリポイ市で3人が逮捕された。ウカビル容疑者の兄ドリス容疑者もその一人で、出頭後に逮捕された。弟が自分の身分証を盗んで、襲撃用の車を調達したと供述しているという。 バルセロナの襲撃では、スペイン人男性一人とイタリア人男性2人の死亡が確認されたほか、ベルギー人、カナダ人、米国人も死亡したとされる。 オーストラリアの報道によると、重傷を負った母親と現場ではぐれてしまった、英豪二重国籍の7歳の男の子が行方不明になっている。 (英語記事 Barcelona attack key suspect Moussa Oukabir confirmed dead)",
> "answer": "スペイン北東部の主要都市バルセロナで17日夕、繁華街のランブラス通りでワゴン車が歩行者を次々とはね、少なくとも13人が死亡し、100人以上が負傷した事件の容疑者の一人が、翌日未明に約120キロ西のカンブリスで警察に射殺された5人の一人だったことが確認された。射殺された襲撃犯たちはカンブリスでもワゴン車で歩行者を次々とはね、7人を死傷させた。"
> },
answerの中の「ランブラス通り」が入力に含まれないnishio
ホントだ!yosider
なんかtextが途中から始まってる感あるなあとは思っていたけど、そういうことだったのか
データ確認するの大事だ…


要約タスクの話の続き
スターターではそもそも256トークンしか扱ってない、テストデータで渡される入力は長いものでは3000トークンある
256トークンでは全然足りないことには多くの人が気づいてmax_tokenを増やそうとした
ここでOut of Memoryで死ぬのが最初の関門だった気がする

transformersやtrlなどのよく整備された抽象度の高いライブラリを雰囲気で使っているyosider

npakaさん、すごいyosider
基本的にはドキュメント通りに動かしたりドキュメントを翻訳したりしてるだけな気もするけど、それでも助かる
「やってみた」のバリエーションが豊富
全部やってみていてすごい

締め切りがあることと「みんなやってる」感があることが良かったのだなという気がしてきたnishio
図書館で勉強するみたいな
実際は2000人Slackにいて500人しかsubmitしてないわけだから「みんな」ではないけど
わかる、1人ではやらないだろうことをやれたと思うyosider
「盛り上がってるところに自分も交ざりたい」みたいな感じかも

僕は提出し終わってるので、演習環境が混み合ってて悲鳴を上げてる人を穏やかな気持ちで眺めているnishio
関連話題あったな
No space left on deviceが複数の人に同じタイミングで出てるの、システム側の問題の匂いを感じるな〜
演習環境でやるのを諦めてシュッとColabでやった
演習環境しかない人は辛そう
選択肢がない人ほどその選択肢が失われる可能性に備えて前倒しで行動することが求められる
26時とかに演習環境のトラブルをSlackの運営への依頼チャンネルに書いてる人たちがいる
焦ってるのだろうけど、運営にはそんな時間に即対応する義務はない
普段数分で終わる採点処理が混み合ってて10分以上掛かったりしてたらしい、まあそうなるよね
23:30に間違えてフォーマットに従わない0点のデータを投稿してしまい、2点(ベースライン)のを出し直したけど間に合わなかった人がいるようだ
サムネになるのはイマイチなので消した

wogikaze
そろそろ打ち切って終わろう、お疲れさまでした
LLM関係、動かそうと思うと(画像生成と比べて)高いグラボが必要になるから思う存分試せてよかった
70Bなんて量子化しても普段動かせないもんね
上にも書かれてるけど数時間追加学習させた程度では、より高いスコアを出すモデルには勝てない
自分は学習は誰かに任せて、軽いところだけ色々触れたらいいなーと思って参加した
なので主にプロンプト、モデル選定を重視した
Retrievalは時間があれば実装したかった(タイムオーバー)
ChatGPTとか他モデルにすぐ生かせるから
スコアが私のテンションを上げ下げするので高いスコアを目標に動いた
一時的にでも10位に入れたのでよかった
テンションぶち上がった
わかるyosider
最終的に選択問題は9割、要約はROUGEで0.35ぐらいになった
すごいyosider
Yosiderさんが上位の方にいたので絶対に抜かして見せる!と思って挑んだwwogikaze
一つのことに集中する1週間ができてとてもよかった
検索しまくるのでタブが大変なことになる(旧GCIワークスペース)
GCIの時は受講期間が長くて若干だれたのと他にやることが多かったので..
今回はちゃんとメモ取っていったのでよかった(scrapboxよい)
勉強用のprivate project作った、ここに講義メモもある
まったく同じnishio
有用そうなSlackの発言もコピペした、役に立った
自分も基本的に試行錯誤しまくった感じ
提出も20回はした
スコア計算だけして残してあるのが30個はある
実は学校の方でまだ強化学習するっていう研究があるんですよーーーーーー
中間テストの勉強してくる

楽しそうだな、次回やりたいblu3moshoya140