1.はじめに
2025年7月末に開催された松尾研LLMコンペ2025に参加しました。
コンペ参加前の私は、LLMに関する知見はゼロ(「LoRA」や「MoE」といった用語も知らない状態)で、さらにチームでの開発経験もありませんでした。
そんな私でも、人類最難関とも言われるデータセット「HLE」でSoTAを目指すモデル開発に、微力ながらも携わる経験ができました。
この記事が、かつての私と同じように「専門知識がないから」「チーム開発の経験がないから」と、開発への挑戦にハードルを感じている方に届けば幸いです。
2. コンペ参加前の自分
はじめに「LLMの知見なし、チーム開発経験もなし」と書きましたが、当時の私がどのようなスキルセットだったのかを、正直にご紹介します。
持っていたスキル:深層学習の基礎と実装経験
まったくのゼロというわけではなく、深層学習(Deep Learning)の基本的な知識はありました。
- 講座の修了: 松尾研究室の講座(DL基礎講座、AIエンジニアリング講座など)を修了していました。
- 実装経験: これにより、MLP(多層パーセプトロン)やVAE(変分オートエンコーダ)、そしてLLMの基礎でもある Transformer については、一通り実装した経験がありました。
持っていたスキル:Transformer(BERT)での開発経験
また、コンペが始まる半年ほど前から、AI系スタートアップでインターンとして働いていました。
そこでは、TransformerのEncoder部分のみを用いたモデルである「BERT」を扱い、overrideして事前学習を行うといった開発経験がありました。
インターンでの開発は、実質的には個人開発のスタイルでした。
決定的に欠けていたもの:「LLM特有の知見」と「チーム開発経験」
「Transformerを触っているなら十分じゃないか」と思われるかもしれません。
しかし、当時の私にとって「BERT」の開発経験と、コンペで求められる「LLM」の開発知見は、似て非なるものでした。
チーム内slackで当たり前に飛び交う「LoRA」「MoE」といった効率的な学習手法や、「強化学習」「GRPO」といった技術については、それって何ですか? という状態。LLM開発特有の“お作法”や最新の知見は、まったくキャッチアップできていませんでした。
唯一の武器?:時間
まとめると、当時の私は、
「DLの基礎とTransformer(BERT)の実装経験はある。しかし、LLMの最新知見とチーム開発の経験はゼロ」
という、状態でした。
ただ一つ、学生の特権として「夏休み」という潤沢な時間だけは持っていました。
3. 志望動機
1. 作る側を経験したかった
ユーザーとして触れるだけでなく、その開発現場がどのようなものなのか、この目で見てみたいという純粋な好奇心がありました。
2. チーム開発を経験し、すごい人たちと関わりたかった
個人開発とは違う、複数人での開発フローや、議論の進め方を肌で学びたかったのです。
また、松尾研のコンペであれば、必ずLLMに関する深い知見を持つ方々がいるはずです。
そうした方々と一緒に開発し、交流することで、自分がどれだけ通用しないのかを知り、そして(あわよくば)知見を吸収したいという思いがありました。
3. 「大企業の遊び」だと思っていた
これが一番現実的な動機かもしれません。
LLMの開発には、膨大な計算資源が必要です。
「マルチGPU・マルチノード」
こんな環境、普通に生きていたらまず触れません。
LLM開発は「大企業の遊び」であり、潤沢なリソースを持つ一部の組織にしか許されないものだと思っていました。
このコンペは、そんな環境を使って、自分も開発に携われるかもしれない千載一遇のチャンスでした。
4. 未経験者の序盤戦:猛スピードのチームで心掛けたこと
コンペのキックオフと同時に、チーム編成、戦略、今後の開発方針が猛烈なスピードで決まっていきました。
コンペ期間はわずか1ヶ月。経験豊富なメンバーたちの議論は非常に速く、正直、序盤の私はそのスピード感に圧倒され、ついていくのに必死でした。
あっという間に時間が過ぎてしまうこと、スピード感が大切なことをしっかりと理解していたのでしょう。
「ここで置いていかれたら、もう二度とチームに合流できない」
そんな危機感を覚え、未経験の私が序盤に意識したのは、とにかく流れから脱落しないことでした。
ひたすら調べ、質問し、食らいつく
ミーティングやSlackでの議論は、当然ながら知らない単語だらけです。
そこで行ったのは、非常に地道な作業です。
- とにかく調べる: わからない単語が出てきたら、議論の流れを追いながら、裏で猛烈にググる。
- 文脈を掴む: リーダーやチームメンバーと話して、様々な意見も聞きました。
- 時間をかける: 議論の時間内では理解が追いつかないことも多く、ミーティング後にアーカイブ(録画)を見直したり、Slackを遡ったりして、必死でキャッチアップしました。
「未経験」を「価値」に変える
コンペでは、支給されたマルチGPUサーバーに各自で開発環境を構築する必要がありました。
当然、経験が浅い私は、多くのメンバーが詰まらないであろうポイントで盛大に詰まりましたが、この「詰まった経験」自体に価値があるのでは?と気づきました。
「自分のような経験が浅い人間がどこで詰まるのか、という情報は、チームのドキュメント整備や後続メンバーにとって価値があるはずだ」
そう思い立ち、環境構築で詰まった点やその解決策をまとめた記事(ドキュメント)の執筆に協力することにしました。
この経験から、「知識がない」ことを卑下するのではなく、「初心者ならではの視点」でチームに貢献できることがあると気づきました。
5. 私が担当したこと:唯一の経験が活きた瞬間
環境構築も一段落し、「自分にも何かできることはないか」とSlackの議論を必死で遡っていたところ、学習データの収集と選別タスクが目に入りました。
その具体的な選別手法として、学習済みモデルのEmbedding(埋め込み表現)を利用するという方法が提案されていました。
LLMの最新知見はゼロでも、BERTでEmbeddingを扱うことなら経験があったためこのタスクに挑戦することにしました。
数少ない「できること」を探し続けた結果
コンペの最先端の議論では、私の知識はまったく役に立ちませんでした。
しかし、チームのタスクを分解していくと、その中には私の「唯一の経験」が活かせる部分が確かに存在したのです。
もしあの時、「自分は未経験だから」とSlackを眺めているだけだったら、このチャンスは掴めなかったと思います。
自分の数少ない武器(私の場合はBERTの経験)を握りしめながら、貢献できる場所を探し続けたことが、結果としてチームに貢献する機会に繋がったと感じています。
6. コンペで得たもの
わずか1ヶ月という短い期間でしたが、「LLM知見ゼロ・チーム開発経験ゼロ」で飛び込んだ私にとって、そのすべてが学びでした。
1. 開発現場のリアル
今回はFinetuningがメインのコンペではありましたが、実際に大規模な計算資源がフル稼働し、LLMが開発されていく「現場」を内部から体験できたことは、何物にも代えがたい経験でした。
参加前は「大企業の遊び」だと思っていた最先端の現場が、どのように議論し、どのように手を動かし、どのような熱量で動いているのか。その「リアル」を肌で感じられたことが、私にとって最大の財産となりました。
2. 「聞くこと」がチームに食らいつく唯一の道
序盤戦で「流れから脱落しない」と心に決め、Slackを必死に追っていました。しかし今思えば、ただSlackを眺めているだけでは、ここまで食らいつくことはできなかったと思います。
本当に重要だったのは、ミーティングの後などに時間をもらい、チームメンバーと直接「交流」し「聞く」ことでした。
テキストだけでは追いきれない議論の背景や、チームが目指す方向性の細かなニュアンスを、対話によって初めて正確に共有できたのです。
「聞くは一時の恥」と言いますが、未経験者にとって「聞くこと」は、チームの一員であり続けるための、そしてモチベーションを維持するための生命線だと痛感しました。
3. できることは、時間をかければ見つかる
コンペ中、私以外にもLLM未経験というメンバーはいました。
経験豊富なメンバーに比べれば、私たちの貢献は小さかったかもしれません。
しかし、経験がほとんどなくても、「自分にできることは何か」を必死に考え、時間をかけて探し続ければ、必ず貢献できるタスクは見つかります。
そして、そのタスクを通じて少しでもチームに貢献できたと感じる瞬間は、本当に嬉しいものです。
「未経験だから」と尻込みせず、「未経験なりに何ができるか」を考え続けることが大切だと感じました。
7. まとめ
「LLMの知見なし、チーム開発経験なし」で始まった私の挑戦でしたが、終わってみれば、今後の糧となる非常に大きな経験を得ることができました。
このような素晴らしい機会を提供してくださった松尾研コンペの運営の皆様、そしてチームメンバーの皆様に、心から感謝申し上げます。
おわりに
本プロジェクトは、国立研究開発法人新エネルギー・産業技術総合開発機構(以下「NEDO」)の「日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」における基盤モデルの開発プロジェクトの一環として行われます。