AIモデルをファインチューニングする方法、段階的に解説

AI入門
この記事は約14分で読めます。

本動画は、AIモデルのファインチューニングを実際に行う具体的な手順を解説したものである。ファインチューニングとは、既存のベースモデルの重みを調整し、特定のタスクにおける性能を向上させる技術であり、小規模なモデルでも最先端の大規模モデルを上回る性能を発揮できる可能性がある。Y Combinatorがファインチューニングされたモデルを活用したスタートアップを積極的に求めている背景には、独自技術を持たない多くのAIスタートアップがOpenAIなどの大手企業に容易に置き換えられてしまうという問題がある。動画では、OpenAIが最近リリースしたオープンソースモデルGPT-o1-mini-12BとGPT-o1-mini-20Bを使用し、Unslothというオープンソースライブラリを通じてGoogle Colabの無料GPU環境でファインチューニングを実施する方法を段階的に紹介している。データセット選択、LoRAアダプタの適用、訓練プロセス、推論テストまでの一連の流れを網羅し、プログラミング初心者でも実践可能な内容となっている。

How to fine-tune an AI model, step by step
Try Vectal for FREE: start a business with AI Agents? Go here: I'm hiring! Apply here: htt...

AIモデルのファインチューニング入門

それでは、AIモデルをステップバイステップでファインチューニングする方法をご紹介します。そもそもファインチューニングとは何でしょうか。ファインチューニングとは、ベースモデルの重みを調整して、特定のタスクにおけるモデルの性能を向上させることです。ファインチューニングのおかげで、非常に小規模なAIモデルでも、GPT-4oのような今日最高のモデルさえも凌駕することができるのです。

このビデオでは、初めてのAIモデルをゼロからファインチューニングする方法をお見せします。実は、皆さんが思っているよりもずっと簡単なんです。信じられないかもしれませんが、モデルのファインチューニングは実は大きなスタートアップの機会なんです。Y Combinator自身が、ファインチューニングされたモデルを中心としたスタートアップの立ち上げを創業者たちに積極的に呼びかけています。文字通り、彼らの最も求められている20のカテゴリーの1つなんです。

その理由は、ほとんどのAIスタートアップの問題点が簡単に置き換え可能だということです。彼らは新しい技術を持っていないため、遅かれ早かれOpenAIがあなたを置き換えようとするでしょう。最近のDev Dayでもそれが見られました。ですから、独自のファインチューニングされたモデルを作成することで、本当の堀を築き、独占的な利益を得られる永続的なビジネスを創造する機会が得られるのです。

モデル選択とデータセットの重要性

ファインチューニングを始める前に、モデルを選択する必要があります。OpenAIは最近、2つの新しいオープンソースモデルをリリースしました。GPT-o1-mini-12BとGPT-o1-mini-20Bです。GPT-o1-miniモデルがファインチューニングに理想的な理由は、非常に優れた性能を持ちながら、ローカルで実行できるほど小規模だからです。ですから、GPT-o1-miniを取り、その重みをファインチューニングして、どんなユースケースにも対応できる独自の強力なモデルを作ることができます。

しかし、問題があります。ほとんどの人は、モデルをファインチューニングするための高品質なデータセットを見つけるのに苦労しています。データセットがなければ、ファインチューニングを始めることはできません。ですから、このビデオの後半で、この問題を解決する方法をお見せします。

ファインチューニングのもう1つの大きなメリットは、検閲されていないモデルです。これが、すべての検閲されていないモデルが作成される方法なんです。つまり、最も議論を呼ぶような質問であっても、何にでも答えられるモデルです。企業や政府が流すプロパガンダのレベルが止まる気配を見せない今、検閲されていないモデルはますます重要になってきています。ですから、一般の人々が偏ったLLMと対話している間、私たちは自分たちの最善の利益を念頭に置いて独自のモデルをファインチューニングするつもりです。

また、ファインチューニングの方法を学ぶことは、自分自身を差別化する素晴らしい方法です。AIに真剣に取り組むなら、これは単純に必須のスキルです。それが個人生活のためであれ、キャリアのためであれ、ビジネスのためであれ、ファインチューニングは未来なのです。それでは、GPTモデルをゼロからファインチューニングする方法をお見せしましょう。いいえ、これを行うためにプログラマーである必要はありません。

Unslothを使った実践的なファインチューニング

さて、Unslothを使用します。これは、あらゆるモデルをファインチューニングするためのオープンソースライブラリです。さまざまな種類のモデルをサポートしています。GPT-o1-mini、Gemma、Qwen2.5、Mistral、Llamaなど。お好きなものを選んでいただいて構いませんが、私はGPT-o1-mini-20Bを使います。無料ノートブックをクリックしてください。ちなみに、ビデオの下にGitHubリンクを貼っておきます。

「無料で始める」をクリックすると、Google Colabにリダイレクトされます。これはGoogleがホストするJupyterノートブックで、無料のGPUが使えます。文字通り無料のグラフィックカードで、このPythonコードを実行してくれます。これにより、少なくともオープンソースのモデルであれば、どんなモデルでもファインチューニングできます。

最初にやるべきことは、右上に行って「接続」をクリックすることです。これで、Tesla T4 GPUの1つを使用してランタイムに接続されます。そして、RAMとディスクが表示されたら、接続が成功したことがわかります。素晴らしい。では、最初のブロックであるインストールから始めましょう。実行してみます。これで、Unslothとこのモデルのファインチューニングに必要な依存関係がインストールされます。

numpyもその1つです。transformersも別のものです。しかし、主なものはtorchです。これはPyTorchの略で、Metaの深層学習フレームワークです。実は、AIモデルを作る最も人気のある方法の1つなんです。

モデルのダウンロードとLoRAアダプタの設定

最初のセルが完了しました。次に進みましょう。ここで、Unslothライブラリを使用してファインチューニングしたいモデルを選択します。ご覧のとおり、これはGPT-o1-mini-20Bに設定されています。最大シーケンス長や4bit量子化を使用するかどうかも設定できますが、正直なところ、これらはすべてデフォルトのままにしておくべきです。Unslothの人たちは、私やあなたよりもファインチューニングについてはるかに詳しいですから。

では、上にスクロールして、このセルを実行しましょう。これでモデルのダウンロードが始まります。ここで見ることができます。このモデルはかなり小さく、200億パラメータなので、数ギガバイトしかありません。実は、これはまだファインチューニングプロセスではありません。Unslothがモデルをプルして、後でより高速なファインチューニングのために環境を最適化しているだけです。

セルがようやく終了しました。次に進みましょう。では、次のセルを実行しましょう。これはLoRAアダプタを追加するもので、正直に言うと、完全には理解していません。それで、このセルが何をするのかVectに尋ねました。そして説明してくれました。組み込みのキーボードショートカットの1つを使用して、メッセージをより簡単で短くしました。

これが、ChatGPTやPerplexityやClaudeではなくVectを使用すべき多くの理由の1つです。同じプロンプトを何度も何度も実行するのを防ぐために、独自のカスタムスラッシュコマンドを作成できるんです。さらに、最新かつ最高のAIモデルすべてを1つのアプリで使用できます。ですから、vect.aiにアクセスして試してみてください。

このセルが何をするかというと、モデルにLoRAアダプタを追加します。したがって、パラメータの一部だけが実際にファインチューニングされます。

データセットの準備と設定

次の部分は推論努力です。正直に言うと、これは完全にスキップできます。実行する必要はありません。これなしでも動作します。では、それを折りたたんでデータ準備に進みましょう。ここで、独自のデータセットを持つことが重要になります。

このColabには、すでにデフォルトのデータセットが含まれています。それがこのHugging Face H4多言語推論です。これは推論データセットで、思考の連鎖が英語からスペイン語とドイツ語の他の4つの言語に翻訳されています。データセットは素晴らしく良いです。だから私たちはこれを再び使います。

このデータセットは、LLMをよりエージェント的にするために作られました。つまり、エージェント的な行動を教えることに焦点を当てています。推論、計画立案、ツール呼び出しに重点を置いています。ここに会話の例があります。ユーザーの役割、次にいくつかのコンテンツ、アシスタントの応答、ユーザーからの別の指示があります。これはインターネット上で何かを購入することだと思います。アシスタント、ユーザーとあります。

これは、モデルがウェブをナビゲートする方法を知るようにファインチューニングするものです。ですから、OpenAI Operatorや OpenAIエージェントモードの独自バージョンを構築したい場合、このようなデータセットは絶対に必要です。実際、OpenAIがこれらのモデルをファインチューニングするために、このようなデータセットを使用した可能性は非常に高いです。

このデータ準備部分で行う必要があるのは、このデフォルトの多言語推論を実際のデータセットに置き換えることです。では、ここのコピーボタンをクリックして名前をコピーしましょう。Google Colabに戻りましょう。これを置き換えて、この名前を貼り付けます。そして、このセルを実行できます。

問題は、このまま実行すると、エラーが発生するということです。それは、このデータセットに複数のファイルが含まれているためです。Hugging Faceの中では、実際にファイルとバージョンを見ることができます。データにナビゲートすると、複数のJSONLファイルがあることがわかります。どれでトレーニングしたいかを指定する必要があります。

では、実際にVectでこれをデバッグしてみましょう。エラー全体を貼り付けます。実際、これがここでの正しいパターンです。このデータセットは異なるスキーマを持っているため、1つのファイルをロードするだけで済みます。これで私の時間がたくさん無駄になりました。同じ間違いを犯さないでください。正しい処理方法はこれです。実行しましょう。そして、ついにエラーなしで成功しました。では、モデルのトレーニングを続けましょう。

チャットテンプレートとトレーニングプロセス

次のセルは、チャットテンプレートを適用します。標準化されたShareGPTプロンプトです。これが実際に何なのか確認したいです。これはUnslothのシステムプロンプトのようです。標準化されたShareGPTが何をするかというと、Unslothのデータフォーマットコンバータで、会話データセットを変換します。

ShareGPT形式はこのように見えます。人間が「こんにちは」と言い、GPTが「やあ」と答えます。これがChatML形式です。基本的に、人間をユーザーに、アシスタントに置き換えるだけです。GPTモデルは、このユーザーとアシスタントの会話でしばらくトレーニングされてきました。GPT-1やGPT-2の頃からだと思います。これはOpenAIが使用する慣例です。

このセルは非常に高速でした。次に、データセットが実際にどのように見えるか見てみましょう。システムプロンプトから始まります。「あなたはChatGPTです。OpenAIによってトレーニングされた大規模言語モデルです。」システムプロンプトはここで終わります。推論、現在の日付、知識カットオフ、推論努力、有効なチャンネルを伝えます。

そして、ユーザーメッセージを開始します。「あなたはウェブショッピングをしています。何をすべきか指示します。」これが私たちのデータセットです。素晴らしい。

GPT-o1-miniのユニークな点は、OpenAI Harmonyを使用していることです。これは実際に、GPT-o1-miniモデル用のOpenAIの新しい応答形式です。この形式により、モデルは思考の連鎖やツール呼び出しのプリアンブルのために、通常の応答とともに複数の異なるチャンネルを出力できます。興味深いです。

これは基本的に新しいプロンプトエンジニアリング形式ですよね。OpenAI Harmonyとプロンプトエンジニアリングおよびコンテキストエンジニアリングへの影響について、より深く掘り下げた動画を私に作ってほしい場合は、コメントしてください。これはわずか2か月前にリリースされましたが、なぜか私は以前にこれを見たことがありませんでした。

モデルのトレーニング実行

次のセルは、実際にモデルのトレーニングの最初のステップです。これが最もエキサイティングな部分です。ここでファインチューニングが始まります。ここでは、これらすべての異なるパラメータを制御できます。学習率だけを調整しますが、それ以外はすべて良いはずです。速度を上げるために60ステップを実行します。

しかし、完全な実行、つまり完全なトレーニング実行を行いたい場合は、データセットに満足し、すべての設定に満足したら、これのコメントを外して完全な実行を行います。私たちは最も安価なTesla T4 GPUを実行していることを覚えておいてください。これは完全に無料です。実際、最も安価で無料です。Googleが無料で提供しています。

Google Colabの有料版をお持ちの場合は、より強力なGPUにアクセスできます。ランタイムに移動すると、「ランタイムタイプの変更」をクリックできます。A100があることがわかります。これはNvidia GPUの3世代または4世代前のようなものです。H100sやH200sではありませんが、それでも非常に強力なGPUです。eBayでは、これはまだ10,000ドルくらいで売られています。

または、GoogleのV6 TPUを使用できます。これは、彼らのテンソル処理ユニット、基本的にGoogleの独自チップです。しかし、これらは有料のGoogle Colabでのみ利用可能です。しかし、完全なトレーニング実行を行う場合は、おそらくより高速なGPUに切り替えるべきです。そうでなければ、非常に長い時間そこに座っていることになります。

では、このセルを実行しましょう。実は、それほど時間はかかりません。しかし、次のセル、これは危険です。これはトレーニング中に問題を引き起こしていました。だから、コメントアウトするつもりです。なぜかはわかりませんが、皆さんの時間を節約するために、同じ間違いを繰り返さないようにしてください。

これらのいくつかはスキップできるかもしれません。これは、使用しているGPUやメモリ量などのメモリ統計を表示しているだけです。しかし、これは実際にトレーニング実行を開始する重要な部分です。では、実行しましょう。これは、GPUとの運次第で、データセットのサイズ、選択したステップ数とエポック数によって、5分から15分かかる場合があります。

実行が終了したら、かかった時間を確認できます。この場合、10分、基本的に11分でした。そして、ピーク時に使用された割合もわかります。

推論とモデルの保存

しかし、楽しい部分は推論です。推論が何を意味するかわからない場合、これは基本的にモデルを実行するときのことです。トレーニングとは、モデルをゼロから作成するか、既存のモデルをファインチューニングするときのことで、これがまさに私たちがここで行ったことです。推論とは、Vect内で、ChatGPT内でチャットしているときに行うことです。完成したモデルと実際にチャットしているときです。モデルはすでに完成しています。もうトレーニングしていません。質問に答えるために使用しているだけです。これが推論です。

ここのColabでは、モデルのトレーニングが終了した後、チャットして、ベースモデルとどう異なる応答をするかを確認できます。ちなみに、このベースモデルは非常に小さいため、OlamaでGPT-o1-miniを文字通り入手できます。良いコンピュータ、特にハイエンドのMacBookやMac Studioをお持ちの場合、12Bを実行できます。

コンピュータに少なくとも5,000米ドルを費やしていない場合、おそらく12Bは実行できませんが、20Bは間違いなく実行できます。ラップトップが20年前のものでない限り。そうすると、おそらくどちらも実行できません。

しかし、ファインチューニングされたバージョンのGPT-o1-miniがデフォルトのGPT-o1-miniと比べてどのように応答するかを比較したい場合は、ラップトップで推論を実行できるように、ローカルでダウンロードするだけです。これはちなみに、完全にプライベートでもあります。それも別のメリットです。そして、デフォルトのGPT-o1-miniがどのように応答するか対ファインチューニングされたものを確認します。

保存するには、2つのオプションがあります。ローカルに保存してコンピュータに保存するか、model.push_to_hubを実行してHugging Faceにモデルを保存できます。その場合は、この行のコメントを外す必要があります。これはコメントアウトする必要があります。

そして、ここでこれをHugging Faceのユーザー名とモデルの名前、それにHugging Faceのシークレットトークンに置き換える必要があります。これは誰にも共有しないでください。Hugging Faceルートを選択する場合は、ここで使用できます。しかし、モデル名を再びHugging Face名に置き換える必要があります。保存した名前をここに入力してください。

ここでチャットすることもできますが、あまり便利ではありません。または、Hugging Faceモデルを使用してフルスタックのWebアプリを構築できますが、これは完全に別のビデオです。ファインチューニング、Hugging Face、ファインチューニング用のデータセットの構築方法、合成データの作成方法についてのより多くのビデオを見たい場合は、必ず登録してください。

このビデオから多くの人が登録しているのを見れば、それは私がこのようなコンテンツをもっと作るべきだという非常に強いシグナルになります。そう言った上で、このGoogle Colabを作成し、このような素晴らしいオープンソースライブラリを構築してくれたUnslothに感謝します。このビデオを楽しんでいただければ幸いです。素晴らしく生産的な一週間をお過ごしください。では、また。

コメント

タイトルとURLをコピーしました