AIGC の時代に、クラウドネイティブ MLOps に基づいて独自の大規模モデルを構築する (パート 2)

デジタル変革の過程で、更新された反復的な生産性ツールに対する企業のニーズを満たすために、Lingqueyun は最近、企業が AI テクノロジーを迅速に実装し、インテリジェントなアプリケーションとサービスを実現できるように支援する Alauda MLOps ソリューションを発表しました。


AIGCのビッグモデルは企業イノベーションの原動力となった

ChatGPT の爆発的な普及により、日常業務の効率と品質を向上させ、対話を通じて必要なテキスト データの生成を支援するために AI の使用を検討する人が増えています。データを表にまとめる場合も、プロンプトに従って記事を書く場合も、専門知識に関する質問と回答を行う場合も、適切なプロンプト エンジニアリングを通じて、ChatGPT は最適な回答を提供し、人間の作業の一部を置き換えることもできます。

また、AIによって生成されるコンテンツはテキストデータに限定されず、AIペイント(安定拡散)、作曲(Amper Music)、ムービー生成(Runway)などのツールも含まれます。これらはAIGCのカテゴリです( AI 生成コンテンツ)、また、多くの業界の生産性を常に刷新しています。

Alauda MLOps は、企業が独自の大規模モデルを迅速に構築できるように支援します


ただし、企業は上記の作業を実行するために所有および管理するオンプレミス モデルを必要とします。これにより、次のことが保証されます。


· セキュリティ要素: 会話中、企業は企業の内部データをインターネット上の AI モデルに送信したくない。

· 関数のカスタマイズ: 独自のデータを使用して、特定のシナリオでモデルの機能を強化したいと考えています (微調整)。

· コンテンツのレビュー: 法規制の要件に従って、入出力コンテンツに対して二次フィルタリングを実行します。


では、このようなシナリオでは、企業はどのようにしてそのようなモデルを迅速に構築してカスタマイズできるのでしょうか? 答えは、クラウドネイティブ MLOps を使用し、モデルを公開することです。


OpenAI の紹介によると、ChatGPT/GPT-4 などの超大規模モデルをトレーニングする場合、Azure + MPI 大規模 GPU コンピューティング クラスターを使用します。プライベート クラウド ネイティブ環境では、MLOps ツール チェーンを使用することで、企業は水平方向にスケールアウトできる大規模な機械学習コンピューティング能力を備えることもできます。MLOps プラットフォームを使用すると、次のような改善が得られます。


大規模な事前トレーニング済みモデルのトレーニングおよび予測プロセスにより適しています。 

· 大規模モデルのアプリケーションのしきい値を下げる: 事前トレーニングされた大規模モデルを使用するための組み込みチュートリアル プロセス。ワン ステップで開始できます。

· 完璧な従来の機械学習および深層学習プラットフォーム。

· パイプライン + スケジューラを使用して大規模な分散トレーニング タスクを均一に配置し、DDP、パイプライン、ZERo、FSDP を含むさまざまな分散トレーニング手法とフレームワークのカスタマイズをサポートします。

プロセスの カスタマイズ: 実際のビジネスに応じて、MLOps ツール チェーンのサブセットを選択して、適切なビジネス プロセスを構築します。

· 完全な MLOps プラットフォーム: スムーズで完全な MLOps ツール チェーンを提供します。


次に、Alauda MLOps プラットフォームを例に、LLaMa 事前学習モデルのチャット モデル (lora) に基づいて独自の「ChatGPT」を構築し、LLM 対話モデルをカスタマイズして開始する方法を紹介します。


さらに、他の HuggingFace 事前トレーニング モデルを使用して、Vicuna、MPT、その他のモデルなどの独自のモデルを迅速に構築することもできます。興味のある読者は、ぜひ自分で試してみてください。


・入手方法・

エンタープライズ MLOps:

https://www.alauda.cn/open/detail/id/740.html

MLOps のオープンソース バージョン:

https://github.com/alauda/kubeflow-chart

クラウドネイティブ MLOps で大規模な事前チャット モデルのカスタマイズと展開を完了するにはどうすればよいですか?

まず、ノートブック環境を起動し、必要な GPU リソースを割り当てる必要があります (実際の測定によると、アルパカ 7b 半精度モデルのトレーニングには、4 つの K80 または 1 つの 4090 と十分なメモリ サイズが必要です)。


 


 

次に、github とハグフェイスから対応するコードとモデルファイルを準備する必要があります。


· プロジェクトをダウンロードします: https://github.com/tloen/alpaca-lora、それを Notebook ファイル ナビゲーション バーにドラッグ アンド ドロップします。コマンド ラインを使用して Notebook で git clone ダウンロードを実行することもできます。

· 言語モデルの事前トレーニング重みをダウンロード: https://huggingface.co/decapoda-research/llama-7b-hf し、ノートブックにドラッグしてアップロードします。git lfs clone を使用して Notebook にモデルをダウンロードすることもできます。

·  lora モデルの事前トレーニング ウェイト: https://huggingface.co/tloen/alpaca-lora-7b をダウンロードし、ノートブックにドラッグしてアップロードします。git lfs clone を使用して Notebook にモデルをダウンロードすることもできます。


ここで大きなモデルをアップロードするには長い待ち時間がかかりますが、huggingface とのネットワーク接続が良好な場合は、Notebook のネットワークから直接ダウンロードすることを選択できます。


次に、まずダウンロードした事前トレーニング済みモデルを使用し、AI ダイアログ Web アプリケーションを起動して効果を確認し、Notebook がこれらのモデル ファイルを読み取るために使用するディスクをマウントします。

次に、上記の yaml 設定またはネイティブ アプリケーション作成フォームを使用して、予測サービスを作成できます。推論サービスは、開始するために 1 つの K80 GPU を使用するだけでよいことに注意してください。


ここで使用するイメージは、次の Dockerfile を使用して構築されています。


推論サービスが開始されたら、ブラウザーで推論サービスにアクセスし、このモデルとさまざまな会話を試みることができます。アルパカローラ モデルは中国語を十分にサポートしていないため、中国語の入力は可能ですが、出力のほとんどは英語のままです。ただし、このモデルはすでにある程度の優れた機能を示しています。


最後に、独自のラベル付きデータを使用してモデルを最適化およびカスタマイズできます (微調整)。alpaca-lora プロジェクトの指示に従い、以下の学習データ形式を参照し、学習データを追加して学習を開始します。現時点では、モデル トレーニングではモデル内の少数のパラメーターのみが更新され、基本的な事前トレーニング済み言語モデル (LLM) パラメーターは、LLM の強力な基本機能を維持するために更新されません。


上記は Notebook での直接トレーニングですが、トレーニング タスクが段階的に複雑なパイプラインを持つ場合は、トレーニング Python プログラムを次のパイプラインにカスタマイズし、クラスターに送信して動作させることができます。タスクがマルチマシン、マルチカード + モデルの並列トレーニング フレームワークである場合は、MLOps に基づいてコードを変更することなく、トレーニング ノードの数を構成し、フレームワークに従って Python コードに対応する分散コンピューティング コードを実装することもできます。パイプラインのスケジュール設定。


上記は Notebook での直接トレーニングであり、最大でも 1 つの物理ノード上のすべての GPU カードのみを使用できます。トレーニング タスクで物理ノード間での分散トレーニングが必要な場合は、トレーニング Python プログラムを次のパイプラインに構築し、操作のためにクラスターに送信できます。


MLOps は、タスク パイプラインでの分散トレーニング ステップの直接構築をサポートしていることに注意してください。Kubeflow Training Operator とは異なり、このモードではユーザーがワークフローとしてドラッグ アンド ドロップした後、Kubernetes でトレーニングされた TFJob、PytorchJob の YAML 構成ファイル、および Python プログラムを定義する必要があります。このノードの並列処理、つまりパイプラインの ParallelFor プリミティブを個別に設定できます。このようにして、データ並列処理 (DDP)、パイプライン並列処理 (PipelineParallel)、FSDP、またはその他の分散トレーニング方法であっても、トランスフォーマーやアクセラレータなどのフレームワークを使用して実行されるトレーニングも、パイプライン内でカスタマイズできます。

さらに、MLOps プラットフォーム上に構築された分散トレーニング パイプラインは、複数のタスクが互いにリソースを占有することによって引き起こされるリソースの無駄を防ぐために、Volcano スケジューラの使用を選択して GPU とポッドのスケジューリングを完了できます。

このようにして、Python コードをドラッグ アンド ドロップした後、このタスクの並列処理、各ノードに必要な CPU、メモリ、グラフィックス カード リソース、およびランタイム イメージを構成し、[実行するために送信] をクリックする必要があります。インターフェイスの ボタンをクリックしてタスクを開始し、タスクの実行ステータスを確認します。


微調整トレーニングが完了したら、上記の手順を参照して、新しいモデルを使用して推論サービスを開始し、検証を開始できます。この時点で、あなたはすでに独自の「ChatGPT」を持っています。


もちろん、現在の 7b (パラメータ 70 億個規模のモデル) の機能が限られていると感じる場合は、13B、30B、65B などのより大きなモデルを試したり、アルパカ以外のモデル構造を使用したりすることもできます。ローラ、例えば:


tiiuae/falcon-40b · ハグフェイス

lmsys/vicuna-13b-delta-v1.1 · 顔を抱きしめる

https://huggingface.co/mosaicml/mpt-7b-chat

https://github.com/ymcui/ Chinese-LLaMA-Alpaca

https://huggingface.co/THUDM/chatglm-6b


さらに、将来のバージョンでは大規模モデルのよりスムーズなトレーニングと予測方法をサポートする予定であることにも言及する価値があります (下図を参照)。適時のアップデートにご注意ください。


これらの公開モデルの機能を確認したい場合、または独自の ChatGPT を作成したい場合は、クラウドネイティブの MLOps プラットフォームを利用してください~

前: AIGC 時代、クラウドネイティブ MLOps に基づいて独自の大規模モデルを構築する (パート 1)

おすすめ

転載: blog.csdn.net/alauda_andy/article/details/131374095