見出し画像

超初学者によるローカルLLM開発-絶対に話通じないの術とその呪いの解き方的なやつ- #松尾研LLMコンペなう

こんにちは!yasunaです!
今は東大松尾研のLLM講座の最終課題で絶賛LLMコンペに挑戦中という感じなのですが、まだスタート地点にも立ててないぜ・・・ってのが昨日

これ、思った以上にXで反響いただいたんですが、全く知識のないやつがLLM開発をいきなりよーいどんで始める!っていうの、あんまり無いのかな…って感じなので非エンジニア文系星人がノリでどこまでLLM開発ってできるのかデッドラインまでやってみようじゃないか….パワー….

前回のあらすじ

話通じなくなった可哀想なローカルLLM…すまん…

ここまでローカル環境(4080)でLLM開発環境を作りました。

  • ファインチューニングできるようにセットアップは完了

  • ファインチューニング用のコードに問題ありそう

  • コードを実行するとLLMと話通じないの術が発動

そうなの、LLM開発分かんにゃーい!って記事を書いたおかげでどこが分からないかということが言語化できました。
それで、じゃあ松尾研の有識者に質問させてもらおうと再度問題点を整理しながらファインチューニング用のコードをCursorに聞きながら直すと…

え、なんかいい感じに学習が進んだかも…?!

ん?今なにやったの?

いきなりファインチューニングがうまくいったようなので補足すると、昨日の時点で「トークナイザー周りのエラー」を発見していました。トークナイザーって名前だけなんとなく聞いたことあるくらいで前回は設定をせずデフォルトのコードのまんまでした。デフォはきっと英語用の設定だったと思う。

ところで、トークナイザーってなにそれ美味しいの?

[input]トークナイザーを小学生でも理解できるように説明してください(パープレに聞いたやつ)

トークナイザーは、コンピュータが人間の言葉を理解するための「通訳」のようなものです。
以下に、わかりやすく説明していきます。

なぜトークナイザーが必要なの?
コンピュータは人間の言葉をそのまま理解することができません。
例えば、「東京」という言葉を見ても、コンピュータにとってはただの記号のように見えます

トークナイザーの仕事
トークナイザーには2つの大切な仕事があります:

1. 言葉を小さく分ける
例えば「東京エレクトロンデバイスは、日本の会社です」という文章を、
「東京」「エレクトロン」「デバイス」「は」「日本の」「会社」「です」のように分けます。

2. 数字に変換する
分けた言葉を、コンピュータが計算できる数字に変えます。
これは、辞書で言葉を番号で整理するようなものです。

なぜ日本語用のトークナイザーが特に重要なの?
英語用のトークナイザーを日本語に使うと、
「と」「う」「き」「ょ」「う」のように1文字ずつバラバラに分けてしまいます。
これは、「東京」という1つの意味のある言葉を理解できなくなってしまうということです。

日本語用のトークナイザーを使うと
-意味のある単位で言葉を分けられる
-処理する量が少なくなる
-コンピュータの学習効率が良くなる

このように、トークナイザーは人間の言葉とコンピュータの言葉の間の
「橋渡し」をする大切な役割を果たしているのです。

あああ!!!!!なるほどね、英語の用のトークナイザーでファインチューニングしてたから言葉がめちゃくちゃに学習されてしまって意味のわからないことを言い出してしまったのか!!!たぶん!理解!!!

じゃあじゃあ日本語のトークナイザーをファインチューニング時にしっかり使えるようにしよう、なんでもCursorに聞く。

[input]トークナイザーの設定はある?

[output]現在のコードにはトークナイザーの明示的な設定がありません。
以下のように追加することをお勧めします:

トークナイザーの設定なかった・・・

たぶんファインチューニングできた

トークナイザーの設定を明記してもう一度ファインチューニングを実行したところ新しいモデルが出力されました!

はじめてみるフォルダの数々

いざElyzaタスク推論!

さて、そのファインチューニング済モデルの性能は?というと、、、、

非常に申し訳ないんですがこの出力はコンペに出すかもだからちょっと出力は見せられません!!!ごめん寝!

でもでもElyzaタスク解いたらまともに日本語話せるようになってました!!!YATTA!!!

ひとまずこれで一回目のコンペ用の出力は確保できたので、ほっ…..

エラーエラーエラーの中で見失ってはいけないもの

まとめになりますが、LLM開発は本当にエラーとの戦いだなと感じています。でも、エラーが出るだけ良い!!!だって間違っているところを親切に教えてくれているんだから。

私はそのエラーに向き合ってどんな手が打てるのかまたAIに質問して考えて実装するのくり返しです。

性能を上げる!まではまだ至っていませんが、座学だけでは得られない力をこうやって実践的なコンペという期間限定で走り抜けるみたいな形で習得していけたらと思います。

まだまだコンペ期間は続きますので、理想の出力を得られるまでもうちょっと頑張ろうかと思いますー!

noteやSNSで進捗を書くことにより自分を追い込むスタイルなのでXでも対戦よろしくお願いします!

12/17まで、次は何ができるようになっているのかなあ・・・


いいなと思ったら応援しよう!