# Day 6 (11/13) ## 自由課題について 今週からは自由課題です。Day 6, 7, 8, 9と自由課題に取り組んでもらい、Day 10に発表会を行います。 今日の最初にチームメンバを決めてTAに報告してください。Day 6 - 9では、TAが講義の最初・途中・最後に各チームに話してみて進捗確認をします。疑問に思っていることや悩んでいることがあればなんでもTAに相談してください。 自由課題では、 - LLMに関して何かを調べたり、何かを作って、最後に発表をしてもらいます。 - 1チームは最高3人までとします。 - 計算機資源についてはDay1で述べた通りColabあるいはAzureのAPIの使用を仮定しますが、それ以上のものを自分で用意して使ってもよいです。また、便宜TAに相談してください。 - 発表の際はスライドを作り、前に出て発表してもらいます。チームメンバの作業内容の分担なども明示してください。 - スライドはslackで共有してもらいます。 - 発表時間はチーム数次第ですが、10分程度になると思います。 - リアルタイムでコードを動かして説明するようなデモはとても良いです。 - また、出来上がったものを自分のGitHubなどにアップロードして公開すると加点します。 - 最後に教員・TA・皆さんで投票を行い、優秀課題を決定します。 ## 自由課題の例 自由課題は自由なのでLLMに関することなら何をしても大丈夫ですが、以下にいくつか例を挙げます。 - LLMを用いて何か面白いサービスを作る - 例:ファインチューンを用いて特別な質問応答システムを作ったり、テキスト処理システムを作る - 例:RAGを用いて自分のデータから情報を引き出すシステムを作る - 例:LLMの外側(ウェブアプリケーション)を作ってサービスのようにする - [gpt-oss](https://github.com/openai/gpt-oss)の機能解説 - GPT-OSSは最新のオープンLLMの1つですが、様々な工夫が取り込まれています。このコードを実際に読み込み、教科書的なTransformerとの違いを発見・解析・分析してみると面白いでしょう。 - [nano gpt](https://github.com/karpathy/nanoGPT)や[nano chat](https://github.com/karpathy/nanochat)を用いてフルスクラッチ - nano gptやnano chatとは、Andrej Karpathy氏が作ったGPTやChatGPTをゼロからフルスクラッチするという教育用のリポジトリです。これらを実際に実行してみて内部構造をより詳細に理解し、改造してみたりするとよいでしょう。 - LLMのパーツの自作 - 例えば上記のnano gptではトークナイザは[Rustの実装](https://github.com/karpathy/nanochat/tree/master/rustbpe)となっています(ちなみにこの実装の元となっているのは、同じくKarpathy氏のミニマムライブラリである[minbpe](https://github.com/karpathy/minbpe)だそうです)。 - このように、LLMを構成する要素技術について、自分のオリジナルなものを作ってみるのも良いでしょう。実際に高性能となることを目指すのもよいですし、面白さを目指してもいいです(例えばマニアックな言語で実装してみる、とか) - オレオレMCPの開発 - オレオレMCPを開発してみるのもいいでしょう。他の学生が使ってみることが出来ると面白いですね - 高速化・省メモリ化技術 - 本演習で触れなかったものとして、量子化といった、高速化・省メモリ化の技術があります。これらについて調べて、速度を計測してみるのもいいでしょう。特殊なデバイスや非力なデバイスでLLMを実行してみるのも面白いかもしれません。 - AIコーディングについて - 本演習で触れなかったものとして、AIコーディング支援ツール(GitHub Copilot, Claude Code, Codex, などなど)があります。これらは非常にホットなトピックで、日々進化が続いています。これらについて調べたり実行してみたりまとめたりするのも良いでしょう。 - マルチモーダルモデルの調査 - 今回はMLLMとして画像だけを扱いましたが、様々なモダリティを扱うモデルがあります(音など)。それらを調べて実行してみてもよいでしょう - 実世界との接続 - LLMをインターフェースとして、自然言語指示でロボットを動かすような研究はEmbodied AIと呼ばれ、非常に盛んに研究されています。そうしたものを調べ、LLMを用いて実世界のフィジカルな何かを動かしたりするものを作ってみるのも面白いでしょう。 注意として、全世界公開するタイプのものを作っても大丈夫ですが、全世界公開するアプリの裏側でUTokyo Azure APIを使う場合、攻撃されて大量にトークンを消費してしまうことがあるかもしれないので、そうしたい場合は一度TAに相談してください。