![]() | これは、本の非公式リポジトリです。大規模な言語モデル:大規模な言語モデル(Apress)に戦略を適用および実装します。この本はこのリポジトリの内容に基づいていますが、ノートブックは更新されており、新しい例と章を取り入れています。本の公式リポジトリをお探しの場合は、元のノートブックを使用して、Apressリポジトリにアクセスしてください。この版には、本に掲載されているすべてのノートブックを元の形式で見つけることができます。購入:[Amazon] [Springer] |
GitHubのコースには、本にあるすべての情報が含まれているわけではないことに注意してください。
大規模な言語モデルとそのアプリケーションに関するこの実用的な自由なハンズオンコースは、恒久的な開発にありますか?私はそれらを完成させるときに、さまざまなレッスンとサンプルを投稿します。
このコースでは、OpenaiとHugging Face Libraryのモデルを使用した実践的な体験を提供します。私たちは、多くのツールを見て、練習して、獲得した新しい知識を適用できるように成長する小さなプロジェクトで練習します。
このセクションで説明されているトピックとテクノロジーには、チャットボット、コード生成、Openai API、hugging face、vectorデータベース、ラングチェーン、微調整、peft細かいチューニング、ソフトプロンプトチューニング、ロラ、qlora、評価モデル、知識蒸留が含まれます。
各レッスンには、ノートブックや記事が適合しています。ノートブックには、その中のコードを理解するための十分な情報が含まれています。記事は、コードとカバーされたトピックに関するより詳細な説明を提供します。
私のアドバイスは、ノートブックと一緒に記事を開いてフォローすることです。記事の多くは、ノートブックに紹介できるバリエーションに関する小さなヒントを提供しています。概念の明確さを強化するために、それらをフォローすることをお勧めします。
ノートブックのほとんどはColabでホストされていますが、いくつかはKaggleにあります。 KaggleはColabと比較して無料版でより多くのメモリを提供しますが、コピーと共有のノートブックはColabがより簡単であり、誰もがKaggleアカウントを持っているわけではないことがわかります。
ノートブックの一部は、Colabの無料バージョンが提供するものよりも多くのメモリを必要とします。私たちは大規模な言語モデルで作業しているので、これはあなたが彼らと一緒に作業し続けると再発する一般的な状況です。自分の環境でノートブックを実行するか、ColabのProバージョンを選択できます。
各ノートブックは、コードを詳細に説明する中程度の記事でサポートされています。
コースのこの最初のセクションでは、2つの小さなプロジェクトを作成することにより、Openai APIを使用することを学びます。 Openaiの役割と、プロンプトを通じて必要な指示をモデルに提供する方法を掘り下げて、私たちが望むように振る舞うようにします。
最初のプロジェクトは、モデルが顧客の注文を受けるレストランチャットボットです。このプロジェクトに基づいて、SQLステートメントジェネレーターを構築します。ここでは、SQL作成コマンドのみを受け入れる安全なプロンプトを作成しようとします。
Openai GPT-3.5とパネルを利用して、ファーストフードレストランに合わせた簡単なチャットボットを開発します。コース中に、さまざまなオープンの役割の理解、温度設定の操作、迅速な注入を避ける方法など、迅速なエンジニアリングの基本を調査します。
| 記事パネル /記事のグレード | ノートブックパネル /ノートブックグラデーション |
|---|
前の記事で使用してチャットボットを作成するのと同じフレームワークに従って、SQL翻訳者に自然言語を開発するためにいくつかの変更を加えました。この場合、モデルにはテーブル構造を備えている必要があり、滑らかな機能性を確保し、潜在的な誤動作を回避するために、プロンプトを調整しました。これらの変更を実施すると、翻訳者は自然言語クエリをSQLクエリに変換できます。 @FmQuagliaは、DBMLを使用してノートブックを作成して、オリジナルよりもはるかに優れたアプローチであるテーブルを説明しています。
| 記事 /記事のグレード | ノートブック /ノートブックグレード /ノートブックDBML |
|---|
モデルから得た結果を改善するための迅速なエンジニアリング手法を探ります。回答をフォーマットし、少数のショットサンプルを使用して構造化された応答を取得する方法のように。
| 記事 | ノート |
|---|
ベクターデータベースの簡単な紹介。コース全体で多くのレッスンで私たちに伴うテクノロジー。 ChromaDBに保存されているさまざまなニュースデータセットからの情報を使用して、検索された生成の例に取り組みます。
大規模な言語モデルの世界で重要性を獲得する1つの側面がある場合、独自の情報を活用する方法を模索しています。このレッスンでは、ベクターデータベースに情報を保存する可能性のあるソリューション、私たちの場合はChromadbを使用し、それを使用して濃縮プロンプトを作成する可能性のあるソリューションを探ります。
| 記事 | ノート |
|---|
同様の質問が以前に質問されたかどうかを判断できるセマンティックキャッシュレイヤーを導入することにより、RAGシステムを強化しました。肯定的な場合、Vectorデータベースにアクセスする代わりに、FAISSで作成されたキャッシュシステムから情報を取得します。
このノートブックに存在するセマンティックキャッシュのインスピレーションと基本コードは、コースのおかげで存在します:https://maven.com/boring-bot/advanced-llm/1/home from hamza farooq。
| 記事 | ノート |
|---|---|
| wip | ノート |
Langchainは、この革命に最も貢献した大規模な言語モデルの宇宙の図書館の1つです。これにより、モデルやその他のシステムへの呼び出しをチェーンすることができ、大規模な言語モデルに基づいてアプリケーションを構築できます。コースでは、数回使用して、ますます複雑なプロジェクトを作成します。
このレッスンでは、Langchainを使用して、前のレッスンからノートブックを強化しました。そこでは、2つのデータセットのデータを使用して濃縮プロンプトを作成しました。今回は、Langchainの助けを借りて、Vectorデータベースからデータを取得して言語モデルに渡すパイプラインを構築しました。ノートブックは、2つの異なるデータセットと2つの異なるモデルで動作するように設定されています。モデルの1つはテキスト生成のためにトレーニングされ、もう1つはText2Text生成のためにトレーニングされます。
| 記事 | ノート |
|---|
Langchainで構築された2モデルパイプラインを使用して、コメント応答システムを作成します。このセットアップでは、2番目のモデルが最初のモデルによって生成された応答のモデレートを担当します。
システムが不要な応答を生成しないようにするための効果的な方法の1つは、応答生成を処理するためにユーザーと直接的な相互作用を持たない2番目のモデルを使用することです。
このアプローチは、ユーザーのエントリに応じて最初のモデルによって生成される望ましくない応答のリスクを減らすことができます。
このタスクのために個別のノートブックを作成します。 1つはOpenaiのモデルを含み、他のモデルは顔を抱き締めることで提供されるオープンソースモデルを利用します。 3つのノートブックで得られた結果は非常に異なります。このシステムは、OpenAIおよびLlama2モデルではるかにうまく機能します。
| 記事 | ノート |
|---|---|
| Openaiの記事 | Openaiノートブック |
| llama2-7bの記事 | llama2-7bノートブック |
| 記事はありません | GPT-Jノートブック |
エージェントは、大規模な言語モデルの世界で最も強力なツールの1つです。エージェントは、ユーザーの要求を解釈し、予想される結果が得られるまでツールとライブラリを自由に使用することができます。
Langchainエージェントを使用すると、ほんの数行で最もシンプルでありながら信じられないほど強力なエージェントの1つを作成します。エージェントは、データアナリストアシスタントとして機能し、Excelファイルに含まれるデータの分析に役立ちます。トレンドを特定し、モデルを使用し、予測を行うことができます。要約すると、データを分析するために毎日の作業で使用できる簡単なエージェントを作成します。
| 記事 | ノート |
|---|
この例では、以前に見られた2つのテクノロジーを組み合わせて、エージェントとベクトルデータベースです。医療情報はChromaDBに保存され、Langchainエージェントが作成されます。これは、必要な場合にのみ、ユーザーの質問に答えるためにモデルに送信される濃縮プロンプトを作成するためにそれを取得します。
つまり、医療チャットボットを支援するためにRAGシステムが作成されます。
注意!!!例としてのみ使用します。ブーツの推奨事項を本物の医師の推奨事項として誰も受け取るべきではありません。チャットボットに与えられる可能性のある使用に対するすべての責任を否定します。私はそれをさまざまなテクノロジーの例としてのみ構築しました。
| 記事 | ノート |
|---|
大規模な言語モデルのパフォーマンスを測定するために使用されるメトリックは、より従来のモデルで使用してきたモデルとはまったく異なります。精度、F1スコア、リコールなどのメトリックから離れ、BLEU、Rouge、Meteorなどのメトリックに移行しています。
これらのメトリックは、言語モデルに割り当てられた特定のタスクに合わせて調整されています。
このセクションでは、これらのメトリックのいくつかの例と、それらを使用して、特定のタスクに対してあるモデルが別のモデルよりも優れているかどうかを判断する方法について説明します。これらのメトリックが、さまざまなモデルのパフォーマンスについて情報に基づいた決定を下すのに役立つ実際のシナリオを掘り下げます。
Bleuは、翻訳の品質を評価するために策定された最初の指標の1つです。ノートブックでは、Googleが作成した翻訳の品質を、Hugging Faceのオープンソースモデルから他の人と比較します。
| 記事WIP | ノート |
|---|
言語モデルによって生成される概要の品質を測定するために、ルージュメトリックの使用について調査します。 2つのT5モデルを使用します。そのうちの1つはT5ベースモデルであり、もう1つは要約を作成するために特別に設計されたT5ベースの微調整です。
| 記事 | ノート |
|---|
この最初の例では、Langsmithを使用してエージェントを構成するさまざまなコンポーネント間のトラフィックを監視する方法を観察できます。エージェントは、ベクトルデータベースを使用して濃縮プロンプトを構築し、モデルに渡すRAGシステムです。 Langsmithは、エージェントのツールの使用とモデルによって行われた決定の両方をキャプチャし、送信/受信されたデータ、消費トークン、クエリの期間、およびそのすべてについて常に情報を提供します。
| 記事 | ノート |
|---|
以前はノートブック、ルージュメトリック:概要を評価して、ルージュを使用して、人間によって作成されたものを最も近似する概要を評価する方法を学びました。今回は、埋め込み距離とLangsmithを使用して、どのモデルが参照距離よりも類似した要約を生成するかを確認します。
| 記事 | ノート |
|---|
私たちは、医療助手として機能するエージェントを取り、ジスカードを取り入れて、その応答が正しいかどうかを評価します。このようにして、モデルの応答が評価されるだけでなく、ベクトルデータベースでの情報検索も評価されます。 Giskardは、完全なRAGソリューションを評価できるソリューションです。
| 記事 | ノート |
|---|
EleutheraiによるLM-Evalライブラリは、業界標準になった学術ベンチマークに簡単にアクセスできます。 OpenAIなどのプロバイダーからのオープンソースモデルとAPIの両方の評価をサポートし、LORAなどの技術を使用して作成されたアダプターの評価を可能にします。
このノートブックでは、ライブラリの小さなが重要な機能:Faceのトランスライブラリと互換性のあるモデルの評価に焦点を当てます。
| 記事-WIP | ノート |
|---|
Finetuning&Optimizationセクションでは、迅速な微調整やLORAなどのさまざまな手法を検討し、ハグするFace Peftライブラリを使用して、大規模な言語モデルを効率的に微調整します。モデルの重量を減らすための量子化などの手法を探索します。
このノートでは、PEFTライブラリからの迅速なチューニングを使用して2つのモデルがトレーニングされています。この手法により、非常に少ないパラメーターの重みを変更することでトレーニングできるだけでなく、同じ基礎モデルを使用するメモリに異なる専門モデルをロードすることができます。
迅速なチューニングは追加の手法であり、事前に訓練されたモデルの重みは変更されていません。この場合に変更する重みは、プロンプトに追加する仮想トークンの重みです。
| 記事 | ノート |
|---|
微調整されたテクニックLORAがどのように機能するかを簡単に説明した後、ブルームファミリーのモデルを微調整して、大規模な言語モデルに使用できるプロンプトを構築するように教えます。
| 記事 | ノート |
|---|
大規模な言語モデルのサイズを縮小するために使用される量子化の簡単な紹介を見る予定です。量子化を使用すると、必要なメモリリソースを削減する大きなモデルをロードできます。また、微調整プロセスにも適用されます。すべてのリソースを消費せずに、単一のGPUでモデルを微調整できます。簡単な説明の後、Google ColabでT4 16GB GPUをブルーム7Bモデルに微調整することができる方法についての例をご覧ください。
| 記事 | ノート |
|---|
このセクションはまだ建設中です。目標は、Microsoft、Google、Nvidia、Openaiなどの分野の大手企業が採用しているのと同じテクニックを使用して、モデルを構築するために、最も単純な剪定技術からモデルを作成するカリキュラムを構築することです。
最初のノートでは、剪定プロセスがDistilgpt2モデルのフィードフォワードレイヤーに適用されます。これは、モデルがこれらの特定のレイヤーの重みを減らすことを意味します。プルンするニューロンは、その重要性スコアに基づいて選択されます。これは、重量のL1ノルムを使用して計算します。これは、この最初の例では、すべての領域でベースモデルを模倣するプルーニックモデルを作成するときに使用できる単純なアプローチです。
モデルの構造を変更することにより、 transformersライブラリで正しく機能するように、新しい構成ファイルを作成する必要があります。
| ノートブック:Distilgpt2モデルの剪定。 |
|---|
この最初のノートブックでは、Distilgpt2モデルで使用されているが、Llamaモデルに適用される剪定プロセスを再現しようとします。モデルの特性を考慮しないことにより、剪定プロセスは完全に使用できないモデルになります。このノートブックは、剪定を受けるモデルの構造を知ることがいかに重要かを理解するための演習として機能します。
| ノートブック:llama3.2モデルを剪定する誤ったアプローチ。 |
|---|
2番目のノートブックは、Distilgpt2に使用されたのと同じ剪定プロセスをLlamaモデルに適用するときに発生した問題に対処します。
正しいアプローチは、モデルのMLP層を個々の層ではなくペアとして扱い、両方の層を一緒に考慮してニューロンの重要性を計算することです。さらに、最大絶対重量を使用して、どのニューロンが剪定された層に残っているかを決定することに切り替えます。
| 剪定llama3記事 | ノートブック:llama3.2モデルの正しいアプローチを剪定します。 |
|---|
このノートブックでは、モデルからレイヤー全体を削除することを伴う深度剪定の例を見ていきます。最初に注意すべきことは、トランスモデルからレイヤー全体を削除すると、通常、モデルのパフォーマンスに大きな影響を与えることです。これは、前の例に見られるように、MLP層からのニューロンの単純な除去と比較して、はるかに劇的なアーキテクチャの変化です。
| ノートブック:llamaモデルを剪定する深さ。 |
|---|
この簡単な初期プロジェクトでは、自然言語からSQLジェネレーターを開発する予定です。まず、2つのソリューションを実装するプロンプトを作成することから始めます。1つはAzureで実行されているOpenaiモデルを使用し、もう1つはFaceのオープンソースモデルを使用します。
| 記事 | ノート |
|---|---|
| OpenAIのNL2SQLプロンプトを作成します | Openaiの迅速な作成 |
| wip | Defog/SQLCoderのプロンプト作成 |
| 推論Azure構成。 | Azure推論ポイントを使用します |
この小さなプロジェクトでは、Microsoft-Phi-3-ModelをDPOと整列させる新しいモデルを作成し、それを抱きしめる顔に公開します。
| 記事 | ノート |
|---|---|
| wip | DPO A PHI3-3モデルとのアライメント。 |
この最初のソリューションでは、大規模なデータベースで動作できるNL2SQLシステムのアーキテクチャを設計します。このシステムは、2つまたは3つの異なるモデルで使用することを目的としています。実際、この例では3つのモデルを使用しています。
これは、プロジェクトのキックオフを速くするアーキテクチャであり、データベース内のいくつかのテーブルのみにサービスを提供し、ペースでさらにテーブルを追加できるようにします。
このソリューションでは、顧客リスク評価と金融業界における製品の推奨における埋め込みと大規模な言語モデル(LLM)の変革力を探ります。顧客情報を保存する形式を変更します。その結果、この情報がシステム内でどのように移動するかを変更し、重要な利点を達成します。
問題が見つかった場合は、問題を開きます。私はできるだけ早くそれを修正するために最善を尽くし、あなたにクレジットを与えます。
貢献をしたり、トピックを提案したい場合は、dissionすることをheしないでください。意見やアドバイスを受け取ることができてうれしいです。
恥ずかしがらないで、ソーシャルネットワークのコースを友達と共有してください。 LinkedInまたはTwitterで私とつながり、あなたが望むものを何でも共有するか、あなたが持っているかもしれない質問をしてください。
星をリポジトリに贈ります。それは私を大いに助けてくれ、レッスンを追加し続けることを奨励しています。これは、このような無料のオープンソースコースをサポートする良い方法です。
Tom Kocmi、Christian Federmann、大規模な言語モデルは、翻訳品質の最先端の評価者です。 LLMSでLLMを評価します。
Pere Martra、Openaiを使用した大規模な言語モデルの紹介
React:言語モデルでの相乗効果と行動。 Langchain&Agentsセクション。医療助手サンプル。
パラメーター効率の高いプロンプトチューニングのスケールの力。微調整と最適化セクション。迅速なチューニングサンプル。
LORA:大規模な言語モデルの低ランク適応。微調整と最適化セクション。 Lora微調整サンプル。
Qlora:量子化されたLLMの効率的な微調整。微調整と最適化セクション。 Qlora微調整サンプル。
テキストからSQLのLLMSをプロンプトする方法:ゼロショット、単一ドメイン、およびクロスドメイン設定の調査。プロジェクト。 SQLへの自然言語。
Saurav Muralidharan、Sharath Turuvekere Sreenivas、Raviraj Joshi、Marcin Chochowski、Mostofa Patwary、Mohammad Shoeybi、Bryan Catanzaro、Jan Kautz、Pavlo Molchanov、 "Pruning and Knowledge Distillationによるコンパクトな言語モデル:Arxiv Preprint arxivrint arxivrint" 2024。https://doi.org/10.48550/arxiv.2407.14679で入手可能。