paint-brush
スターバックス コーヒーのコストについて独自のプライベート ChatGPT モデルをトレーニングする方法@zhoujieguang
3,156 測定値
3,156 測定値

スターバックス コーヒーのコストについて独自のプライベート ChatGPT モデルをトレーニングする方法

Zhou Jieguang12m2023/06/18
Read on Terminal Reader

長すぎる; 読むには

スターバックス 1 杯の料金と 2 時間の時間を使えば、トレーニングされた独自のオープンソースの大規模モデルを所有できます。
featured image - スターバックス コーヒーのコストについて独自のプライベート ChatGPT モデルをトレーニングする方法
Zhou Jieguang HackerNoon profile picture
0-item
1-item
2-item


スターバックス 1 杯の料金と 2 時間の時間を使えば、トレーニングされた独自のオープンソースの大規模モデルを所有できます。さまざまなトレーニング データの方向に従ってモデルを微調整して、医療、プログラミング、株式取引、恋愛アドバイスなどのさまざまなスキルを向上させることができ、大規模なモデルがあなたをより「理解」できるようになります。オープンソースの DolphinScheduler を活用したオープンソースの大規模モデルのトレーニングを試してみましょう。

イントロ

ChatGPTの民主化

ChatGPT の誕生は、間違いなく私たちを AI の未来への期待で満たしました。その洗練された表現力と強力な言語理解力は世界を驚かせました。ただし、ChatGPT は Software as a Service (SaaS) として提供されるため、個人のプライバシー漏洩と企業データのセキュリティの問題はすべてのユーザーと企業にとって懸念事項です。オープンソースの大規模モデルがますます登場しており、個人や企業が独自のモデルを持つことが可能になっています。しかし、オープンソースの大規模モデルの導入、最適化、利用には敷居が高く、誰もが簡単に利用するのは困難です。これに対処するために、オープンソースの大規模モデルのトレーニング、チューニング、デプロイをワンクリックでサポートする Apache DolphinScheduler を使用します。これにより、誰でも、非常に低コストで、技術的な専門知識を備えたデータを使用して、独自の大規模モデルをトレーニングできるようになります。

誰のためですか? — 画面の前にいる人は誰でも

私たちの目標は、プロの AI エンジニアだけでなく、GPT に興味のあるすべての人が、自分たちをより「理解」するモデルを手に入れる喜びを享受できるようにすることです。私たちは誰もが自分の AI アシスタントを形作る権利と能力を持っていると信じています。 Apache DolphinScheduler の直感的なワークフローにより、これが可能になります。おまけに、Apache DolphinScheduler は、GitHub 上で 10,000 を超えるスター数を持つビッグ データおよび AI スケジューリング ツールです。これは Apache Software Foundation のトップレベル プロジェクトであるため、商用上の問題を心配することなく無料で使用し、コードを変更できます。


あなたが独自のデータを使用してモデルをトレーニングしたいと考えている業界の専門家であっても、深層学習モデルのトレーニングを理解して探索したいと考えている AI 愛好家であっても、当社のワークフローは便利なサービスを提供します。複雑な前処理、モデルのトレーニング、最適化の手順を解決し、簡単な操作に 1 ~ 2 時間しか必要とせず、より「理解できる」ChatGPT 大規模モデルを構築するのに 20 時間の実行時間しかかかりません。

それでは、この魔法の旅を始めましょう! AIの未来をみんなに届けましょう。

あなたをよりよく「理解」する ChatGPT を作成するためのたった 3 つのステップ

  1. 3090レベルと同等の低コストでGPUカードをレンタル
  2. DolphinSchedulerを起動する
  3. DolphinScheduler ページのトレーニング ワークフローとデプロイメント ワークフローをクリックして、ChatGPT を直接体験してください。

3090 グラフィックス カードを備えたホストの準備

まず、3090 グラフィックス カードが必要です。デスクトップ コンピュータをお持ちの場合は、それを直接使用できます。そうでない場合は、オンラインで GPU を備えたレンタル可能なホストが多数あります。ここでは適用例として AutoDL を使用します。 https://www.autodl.com/homeを開き、登録してログインします。その後、画面に表示される手順 1、2、3 に従って、コンピューティングパワーマーケットで対応するサーバーを選択できます。

画像出典:著者自身の写真


ここではコストパフォーマンスの高いRTX 3090グラフィックスカードを選ぶのがおすすめです。テストの結果、1 ~ 2 人がオンライン タスクに RTX 3090 を使用できることが判明しました。より高速なトレーニングと応答速度が必要な場合は、より強力なグラフィックス カードを選択できます。 1 回のトレーニングには約 20 時間かかりますが、テストには約 2 ~ 3 時間かかります。予算40元もあれば簡単に作れます。

コミュニティ ミラーをクリックし、下の赤いボックスWhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521と入力します。以下のように画像を選択できます。現在、V1 バージョンのみが利用可能です。今後、新しいバージョンがリリースされると、最新のものを選択できます。

画像出典:著者自身の写真


モデルを複数回トレーニングする必要がある場合は、ハードディスク容量を 100 GB 程度に拡張することをお勧めします。


作成後、次の図に示す進行状況バーが完了するまで待ちます。

DolphinSchedulerを起動する

独自のオープンソースの大規模モデルをインターフェイス上にデプロイしてデバッグするには、DolphinScheduler ソフトウェアを起動する必要があり、次の構成作業を行う必要があります。

サーバーにアクセスするには

利用可能な方法は 2 つあります。好みに合ったものを選択できます。

  1. JupyterLab 経由でログインします (プログラマ以外の場合):

以下に示す JupyterLab ボタンをクリックします。

画像出典:著者自身の写真


ページは JupyterLab にリダイレクトされます。そこから「ターミナル」をクリックして入力できます。

画像出典:著者自身の写真


2. ターミナル経由でログインします (コーダー向け):

次の図に示すボタンから SSH 接続コマンドを取得できます。

画像出典:著者自身の写真


次に、端末経由で接続を確立します。

画像出典:著者自身の写真


DolphinSchedulerのメタデータをインポートする

DolphinScheduler では、ワークフロー定義、環境構成、テナント情報などを含むすべてのメタデータがデータベースに保存されます。DolphinScheduler の起動時にユーザーがこれらのワークフローを簡単に確認できるように、事前定義されたワークフロー メタデータをコピーして直接インポートできます。画面から。


MySQL にデータをインポートするためのスクリプトを変更します。

ターミナルを使用して、次のディレクトリに移動します。

cd apache-dolphinscheduler-3.1.5-bin


コマンドvim import_ds_metadata.shを実行して、 import_ds_metadata.shファイルを開きます。ファイルの内容は次のとおりです。



Set variables

Hostname

HOST="xxx.xxx.xxx.x"


UsernameUSERNAME="root"PasswordPASSWORD="xxxx"PortPORT=3306Database to import intoDATABASE="ds315_llm_test"SQL filenameSQL_FILE="ds315_llm.sql"mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -e "CREATE DATABASE $DATABASE;"mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD $DATABASE < $SQL_FILE


xxx.xxx.xxx.x と xxxx を、パブリック ネットワーク上の MySQL データベースの関連する構成値に置き換えます (Alibaba Cloud、Tencent Cloud に申請するか、自分でインストールすることができます)。次に、以下を実行します。

bash import_ds_metadata.sh


実行後、興味があれば、データベース内の対応するメタデータを確認できます (MySQL に接続して表示します。コードに詳しくない場合は、この手順を飛ばしてください)。

画像出典:著者自身の写真


DolphinSchedulerを起動する

サーバーのコマンド ラインで次のファイルを開き、DolphinScheduler を以前にインポートしたデータベースに接続するように構成を変更します。


/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh


データベース セクションの関連する構成を変更し、他のセクションは変更しないでください。 「HOST」と「PASSWORD」の値を、インポートされたデータベースの構成値 (xxx.xxx.xxx.x と xxxx) に変更します。


export DATABASE=mysqlexport SPRING_PROFILES_ACTIVE=${DATABASE}export SPRING_DATASOURCE_URL="jdbc:mysql://HOST:3306/ds315_llm_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"export SPRING_DATASOURCE_USERNAME="root"export SPRING_DATASOURCE_PASSWORD="xxxxxx"......


設定後、次のコマンドを実行します (このディレクトリ /root/apache-dolphinscheduler-3.1.5-bin でもあります)。

bash ./bin/dolphinscheduler-daemon.sh start standalone-server


実行後は、 tail -200f standalone-server/logs/dolphinscheduler-standalone.logを使用してログを確認できます。この時点で、DolphinScheduler が正式に起動されました。


サービスを開始した後、AutoDL コンソールで [カスタム サービス] (赤色で強調表示されている) をクリックすると、次の URL にリダイレクトされます。

画像出典:著者自身の写真


URL を開いたときに 404 エラーが表示されても、心配する必要はありません。 URL にサフィックス /dolphinscheduler/ui を追加するだけです。

画像出典:著者自身の写真

AutoDL モジュールはポート 6006 を開きます。DolphinScheduler のポートを 6006 に設定すると、提供されたエントリ ポイントを介してポートにアクセスできるようになります。ただし、URL リダイレクトにより、404 エラーが発生する場合があります。このような場合は、URL を手動で入力する必要があります。



ログイン認証情報:

ユーザー名: admin

パスワード: dolphinscheduler123


ログイン後、「プロジェクト管理」をクリックすると、「vicuna」という名前の事前定義プロジェクトが表示されます。 「vicuna」をクリックしてプロジェクトに入ります。

画像出典:著者自身の写真


オープンソースの大規模モデルのトレーニングとデプロイメント

ワークフローの定義

Vicuna プロジェクトに入ると、トレーニング、デプロイ、および Kill_Service の 3 つのワークフローが表示されます。その使用法と、大規模なモデルを構成してデータをトレーニングする方法を見てみましょう。

画像出典:著者自身の写真


下の実行ボタンをクリックして、対応するワークフローを実行できます。

画像出典:著者自身の写真


トレーニング

トレーニング ワークフローをクリックすると、2 つの定義が表示されます。 1 つは Lora を通じてモデルを微調整するため (主に alpaca-lora、 https://github.com/tloen/alpaca-loraを使用)、もう 1 つはトレーニングされたモデルをベース モデルとマージして最終モデルを取得するためです。 。

画像出典:著者自身の写真


ワークフローには次のパラメーターがあります ([実行] をクリックするとポップアップ表示されます)。


  • Base_model: ニーズに応じて選択してダウンロードできるベース モデル。オープンソースの大規模モデルは、学習と体験のみを目的としています。現在のデフォルトは TheBloke/vicuna-7B-1.1-HF です。
  • data_path: パーソナライズされたトレーニング データとドメイン固有のデータのパス。デフォルトは /root/demo-data/llama_data.json です。
  • lora_path: トレーニングされた Lora 重みを保存するパス、/root/autodl-tmp/vicuna-7b-lora-weight。
  • Output_path: ベース モデルと Lora ウェイトをマージした後の最終モデルの保存パス。デプロイメントに必要になるため、メモしておきます。
  • num_epochs: トレーニング パラメーター、トレーニング エポックの数。テスト用に 1 に設定できますが、通常は 3 ~ 10 に設定されます。
  • Cutoff_len: テキストの最大長。デフォルトは 1024 です。
  • micro_batch_size: バッチ サイズ。

画像出典:著者自身の写真


配備

大規模なモデルをデプロイするためのワークフロー (主に FastChat、 https://github.com/lm-sys/FastChatを使用)。最初に kill_service を呼び出してデプロイされたモデルを強制終了し、次にコントローラーを開始し、モデルを追加して、Gradio Web サービスを開きます。

画像出典:著者自身の写真


開始パラメータは次のとおりです。

画像出典:著者自身の写真


  • model: モデル パス。Huggingface モデル ID または私たちがトレーニングしたモデル パス、つまり上記のトレーニング ワークフローの Output_path にすることができます。デフォルトは TheBloke/vicuna-7B-1.1-HF です。デフォルトを使用すると、vicuna-7b モデルが直接デプロイされます。

Kill_service

このワークフローは、デプロイされたモデルを強制終了し、GPU メモリを解放するために使用されます。このワークフローにはパラメータがないため、直接実行できます。デプロイされたサービスを停止する必要がある場合 (モデルを再トレーニングする必要がある場合や GPU メモリが不足している場合など)、kill_service ワークフローを直接実行して、デプロイされたサービスを強制終了できます。


いくつかの例を確認すると、デプロイメントが完了します。それでは、実際の操作を見てみましょう。

大規模モデルの動作例

  1. 大規模モデルのトレーニング

トレーニング ワークフローを実行し、デフォルトのパラメーターを選択することで、ワークフローを直接開始します。

画像出典:著者自身の写真


以下に示すように、対応するタスクを右クリックしてログを表示します。

画像出典:著者自身の写真


サイドバーの左下にあるタスク インスタンス パネルでタスクのステータスとログを表示することもできます。トレーニング プロセス中、現在のトレーニング ステップ、損失メトリクス、残り時間などを含むログを確認することで、進行状況を監視できます。現在のステップを示す進行状況バーが表示されます。ステップ = (データ サイズ * エポック) / バッチです。サイズ。

画像出典:著者自身の写真


トレーニングが完了すると、ログは次のようになります。

画像出典:著者自身の写真


パーソナライズされたトレーニング データの更新

デフォルトのデータは/root/demo-data/llama_data.jsonにあります。現在のデータ ソースは、中国の医療データを使用して微調整された医療モデルである Huatuo です。はい、私たちの例は家庭医のトレーニングです。

画像出典:著者自身の写真


特定のフィールドにデータがある場合は、独自のデータを指すことができます。データ形式は次のとおりです。


1 行に 1 つの JSON があり、フィールドの意味は次のとおりです。

  • 指示 ****: モデルに与える指示。
  • 入力: 入力します。
  • 出力: 予想されるモデル出力。

例えば:

{"instruction": "calculation", "input": "1+1 equals?", "output": "2"}


指示フィールドと入力フィールドを 1 つの指示フィールドにマージできることに注意してください。入力フィールドは空のままにすることもできます。


トレーニング時に、data_path パラメーターを変更して独自のデータを実行します。


ノート:


最初のトレーニングの実行中に、ベース モデルは指定された場所 (TheBloke/vicuna-7B-1.1-HF など) からフェッチされます。ダウンロード処理が行われますので、ダウンロードが完了するまでお待ちください。このモデルの選択はユーザーによって決定され、他のオープンソースの大規模モデルをダウンロードすることも選択できます (使用する場合は関連するライセンスに従ってください)。


ネットワークの問題により、基本モデルのダウンロードは最初のトレーニング実行の途中で失敗する可能性があります。このような場合、失敗したタスクをクリックし、再実行を選択してトレーニングを続行できます。動作を以下に示します。

画像出典:著者自身の写真


トレーニングを停止するには、停止ボタンをクリックすると、トレーニングに使用された GPU メモリが解放されます。

導入ワークフロー

ワークフロー定義ページで、デプロイ ワークフローをクリックして実行し、モデルをデプロイします。

画像出典:著者自身の写真


独自のモデルをトレーニングしていない場合は、以下の図に示すように、デフォルト パラメーター TheBloke/vicuna-7B-1.1-HF を使用してデプロイ ワークフローを実行して、 vicuna-7bモデルをデプロイできます。

画像出典:著者自身の写真


前のステップでモデルをトレーニングした場合は、モデルをデプロイできます。デプロイ後、独自の大規模モデルを体験できます。起動パラメータは次のとおりです。ここには、前のステップからのモデルのoutput_pathを入力する必要があります。

画像出典:著者自身の写真


次に、デプロイされたワークフロー インスタンスに入りましょう。ワークフロー インスタンスをクリックし、「デプロイ」プレフィックスが付いたワークフロー インスタンスをクリックします。

画像出典:著者自身の写真

右クリックして「refresh_gradio_web_service」を選択し、タスク ログを表示し、大規模なモデル リンクの場所を見つけます。


動作を以下に示します。

画像出典:著者自身の写真



ログには、次のようなパブリックにアクセスできるリンクがあります。

画像出典:著者自身の写真


ここに 2 つのリンクがあります。 AutoDL は既に dolphinscheduler に使用されているポート 6006 しか開かないため、リンク0.0.0.0:7860にはアクセスできません。その下のリンク[https://81c9f6ce11eb3c37a4.gradio.live.](https://81c9f6ce11eb3c37a4.gradio.live.)など) に直接アクセスできます。


このリンクはデプロイするたびに変更される可能性があるため、ログから再度見つける必要があることに注意してください。


リンクを入力すると、自分の ChatGPT の会話ページが表示されます。

画像出典:著者自身の写真


画像出典:著者自身の写真


はい!これであなたは独自の ChatGPT を手に入れることができ、そのデータはあなただけに役立ちます。


そして、あなたはコーヒー一杯の値段よりも安く済みました~~


さあ、あなただけのプライベート ChatGPT を体験してください!

まとめ

このデータ主導かつテクノロジー指向の世界では、専用の ChatGPT モデルを持つことには計り知れない価値があります。人工知能とディープラーニングの進歩により、私たちはパーソナライズされた AI アシスタントを形づくることができる時代を迎えています。独自の ChatGPT モデルをトレーニングしてデプロイすることは、AI とそれが世界をどのように変革しているかをより深く理解するのに役立ちます。


要約すると、ChatGPT モデルを独自にトレーニングしてデプロイすると、データのセキュリティとプライバシーを保護し、特定のビジネス要件を満たし、テクノロジー コストを節約し、DolphinScheduler などのワークフロー ツールを使用してトレーニング プロセスを自動化するのに役立ちます。また、現地の法律や規制を遵守することもできます。したがって、ChatGPT モデルを自分でトレーニングしてデプロイすることは、検討する価値のあるオプションです。


重要な注意事項:

  • データのセキュリティとプライバシー:パブリック API サービスを通じて ChatGPT を使用する場合、データのセキュリティとプライバシーについて懸念があるかもしれません。データがネットワーク経由で送信される可能性があるため、これは当然の懸念です。モデルを自分でトレーニングしてデプロイすることで、データが自分のデバイスまたはレンタル サーバー上でのみ保存および処理されるようになり、データのセキュリティとプライバシーが確保されます。
  • ドメイン固有の知識:特定のビジネス要件を持つ組織または個人の場合、独自の ChatGPT モデルをトレーニングすることで、ビジネスに関連する最新かつ最も関連性の高い知識がモデルに確実に含まれるようになります。ビジネス ドメインに関係なく、ビジネス ニーズに合わせて特別にトレーニングされたモデルは、汎用モデルよりも価値があります。
  • 投資コスト: OpenAI の ChatGPT モデルを使用すると、特定のコストが発生する場合があります。同様に、モデルを独自にトレーニングしてデプロイする場合も、リソースを投資し、テクノロジーのコストが発生する必要があります。たとえば、大規模モデルのデバッグは 40 元という低価格で体験できますが、長期的に実行する場合は、Nvidia RTX 3090 グラフィックス カードを購入するか、クラウド サーバーをレンタルすることをお勧めします。したがって、長所と短所を比較検討し、特定の状況に最も適したソリューションを選択する必要があります。
  • DolphinScheduler: Apache DolphinScheduler のワークフローを使用すると、トレーニング プロセス全体を自動化し、技術的な障壁を大幅に軽減できます。アルゴリズムに関する広範な知識がなくても、このようなツールを使用して独自のモデルを正常にトレーニングできます。 DolphinScheduler は、大規模なモデルのトレーニングのサポートに加えて、ビッグ データのスケジューリングと機械学習のスケジューリングもサポートしており、お客様と非技術スタッフがビッグ データの処理、データの準備、モデルのトレーニング、およびモデルのデプロイメントを簡単に処理できるようにします。さらに、オープンソースであり、無料で使用できます。
  • オープンソースの大規模モデルに対する法的および規制上の制約: DolphinScheduler は単なるビジュアル AI ワークフロー ツールであり、オープンソースの大規模モデルは提供されません。オープンソースの大規模モデルを使用およびダウンロードする場合は、各モデルに関連付けられたさまざまな使用上の制約を認識し、それぞれのオープンソース ライセンスに準拠する必要があります。この記事で挙げた例は、個人的な学習と経験のみを目的としています。大規模なモデルを使用する場合は、オープンソース モデルのライセンスに準拠していることを確認することが重要です。さらに、データの保存と処理に関しては国ごとに異なる厳しい規制があります。大規模なモデルを使用する場合は、地域の特定の法的規制やポリシーに準拠するようにモデルをカスタマイズおよび調整する必要があります。これには、地域のプライバシーおよび機密情報の取り扱い規制に準拠するためのモデル出力の特定のフィルタリングが含まれる場合があります。


ここでも公開されています。