スターバックスのコーヒー代で、自分自身のプライベートChatGPTモデルをトレーニングしよう
Train your own private ChatGPT model with the cost of Starbucks coffee.
ChatGPTの誕生は確かにAIの未来に対する私たちの期待を満たしてくれました。その洗練された表現力と強力な言語理解能力は世界中を驚かせました。しかし、ChatGPTはソフトウェアとして提供されているため、個人情報漏洩や企業データのセキュリティ問題は、すべてのユーザーや企業にとって懸念事項です。ますます多くのオープンソースの大規模モデルが登場し、個人や企業が自分たちのモデルを持つことが可能になっています。しかし、大規模なオープンソースモデルを始め、最適化し、使用することには高い参入障壁があり、誰もが簡単に使用することができないため、これを解決するために、私たちはApache DolphinSchedulerを使用して、大規模なオープンソースモデルのトレーニング、チューニング、デプロイメントをワンクリックでサポートすることで、誰でも自分のデータを使用して非常に低コストかつ技術的専門知識を持って自分自身の大規模モデルをトレーニングできるようにしました。
対象者:画面の前にいる誰でも
私たちの目標は、プロのAIエンジニアだけでなく、GPTに興味を持っている人なら誰でも、より良く「理解」できるモデルを持つ喜びを楽しむことです。私たちは、誰もが自分自身のAIアシスタントを形作る権利と能力を持っていると信じています。Apache DolphinSchedulerの直感的なワークフローにより、これが可能になります。さらに、Apache DolphinSchedulerは、GitHubで1万以上のスターを獲得したビッグデータとAIのスケジューリングツールです。これはApache Software Foundationのトップレベルプロジェクトであり、商業的な問題を心配することなく、無料で使用し、コードを変更できます。
あなたが自分自身のデータを使用してモデルをトレーニングしたい産業の専門家であろうと、ディープラーニングモデルのトレーニングを理解し、探求したいAIの熱心な愛好家であろうと、私たちのワークフローはあなたに便利なサービスを提供します。複雑な前処理、モデルトレーニング、最適化ステップを解決し、わずか1〜2時間の簡単な操作と20時間の実行時間だけで、より「理解」の深いChatGPTの大規模モデルを構築することができます。
さあ、この魔法の旅を始めましょう!AIの未来を誰にでももたらしましょう。
- スクラムマスターの面接質問 – ChatGPT 版
- オープンソースとオープンイノベーションによるAIシーンの破壊
- GraphStormによる高速グラフ機械学習:企業規模のグラフ問題を解決するための新しい方法
あなたをより「理解」できるChatGPTを作成するための3つのステップのみ
- 3090レベルに相当する低コストのGPUカードをレンタルする
- DolphinSchedulerを起動する
- DolphinSchedulerページのトレーニングワークフローとデプロイメントワークフローをクリックして、直接自分のChatGPTを体験する
3090グラフィックカードを搭載したホストの準備
まず、3090グラフィックカードが必要です。デスクトップコンピューターをお持ちの場合は、直接使用できます。そうでない場合は、GPUを搭載したホストがオンラインでレンタルできます。ここでは、AutoDLを例にとって適用しています。これを開き、登録してログインしてください。その後、画面に表示されるステップ1、ステップ2、ステップ3に従って、計算能力市場で対応するサーバーを選択できます。
ここでは、コストパフォーマンス比が高いRTX 3090グラフィックカードを選択することをお勧めします。テストの結果、1〜2人がオンラインタスクにRTX 3090を使用できることがわかりました。より高速なトレーニングと反応速度を望む場合は、より強力なグラフィックカードを選択できます。トレーニングには約20時間、テストには約2〜3時間かかります。予算40元で簡単に完了できます。
ミラー
コミュニティミラーをクリックし、以下の赤いボックスにWhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521
を入力します。以下のように画像を選択できます。現在はV1版のみが利用可能です。新しいバージョンがリリースされるたびに、最新版を選択できます。
モデルを複数回トレーニングする必要がある場合は、ハードディスク容量を約100GBに拡張することをお勧めします。
作成後、以下の画像に表示される進行状況バーが完了するのを待ちます。
DolphinSchedulerを起動する
自分自身のオープンソースの大規模モデルを展開してデバッグするために、DolphinSchedulerソフトウェアを起動する必要があります。以下の構成作業を行う必要があります。
サーバーにアクセスするには
利用可能な2つの方法があります。お好みに合わせて選択できます:
- JupyterLabを介してログイン(非コーダー向け):
JupyterLabボタンをクリックしてください。
ページがJupyterLabにリダイレクトされます。そこから、「Terminal」をクリックして入力できます。
2. ターミナルを使用してログイン(コーダー向け):
以下のイメージに表示されるボタンからSSH接続コマンドを取得できます。
その後、ターミナルを介して接続を確立します。
DolphinSchedulerのメタデータをインポートする
DolphinSchedulerでは、ワークフロー定義、環境設定、テナント情報などのすべてのメタデータがデータベースに格納されます。 DolphinSchedulerが起動されたときにこれらのワークフローをユーザーが見るのを便利にするために、スクリーンから事前定義されたワークフローのメタデータを直接インポートできます。
MySQLにデータをインポートするためのスクリプトを変更します:
ターミナルを使用して、以下のディレクトリに移動します:
cd apache-dolphinscheduler-3.1.5-bin
コマンドを実行します: vim import_ds_metadata.sh
を実行して、import_ds_metadata.sh
ファイルを開きます。ファイルの内容は以下のとおりです。
変数の設定
ホスト名
HOST="xxx.xxx.xxx.x"
ユーザー名
USERNAME="root"
パスワード
PASSWORD="xxxx"
ポート
PORT=3306
インポートするデータベース
DATABASE="ds315_llm_test"
SQLファイル名
SQL_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=mysql
export 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を使用)、もう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を使用)です。まずkill_serviceを呼び出して展開されたモデルを停止し、次にコントローラを順次起動してモデルを追加し、Gradio Webサービスを開きます。
開始パラメータは以下のとおりです:
- model:モデルパスは、HuggingfaceモデルIDまたはトレーニングワークフローの出力パスであることができます。すなわち、上記のトレーニングワークフローのoutput_pathです。デフォルトはTheBloke/vicuna-7B-1.1-HFです。デフォルトを使用する場合は、直接vicuna-7bモデルを展開します。
Kill_service
このワークフローは、展開されたモデルを停止し、GPUメモリを解放するために使用されます。このワークフローにはパラメータはありません。必要に応じて直接kill_serviceワークフローを実行して、展開されたサービスを停止することができます(モデルの再トレーニングが必要な場合やGPUメモリが不足している場合など)。
いくつかの例を通じて、展開が完了しました。次に、実際の操作を見てみましょう:
大規模モデルの操作例
-
大規模モデルのトレーニング
トレーニングワークフローを直接実行し、デフォルトのパラメータを選択して開始します。
対応するタスクを右クリックしてログを表示することもできます。
トレーニングプロセス中、現在のトレーニングステップ、損失メトリック、残り時間などを含むログをチェックすることで進捗状況を監視できます。現在のステップを示す進捗バーがあります。ステップ=(データサイズ×エポック)/バッチサイズです。
トレーニングが完了すると、ログは以下のようになります:
パーソナライズされたトレーニングデータの更新
デフォルトのデータは/root/demo-data/llama_data.json
にあります。現在のデータソースは、中国の医療データを使用してファインチューニングされた医療モデルであるHuatuoです。はい、私たちの例は家庭医療のトレーニングです。
特定のフィールドにデータがある場合は、独自のデータを指定することができます。データ形式は、1行あたり1つのJSONで、フィールドの意味は以下のとおりです。
- instruction ****:モデルに与える指示。
- input:入力。
- output:期待されるモデルの出力。
例えば:
{"instruction": "calculation", "input": "1+1 equals?", "output": "2"}
指示と入力を単一の指示フィールドにマージすることができることに注意してください。入力フィールドは空白のままでも構いません。
トレーニング時には、data_pathパラメータを変更して独自のデータを実行するようにしてください。
注意:
初回のトレーニング実行中、TheBloke/vicuna-7B-1.1-HFのように指定された場所からベースモデルが取得されます。ダウンロードがあるため、完了するまで待ってください。このモデルの選択はユーザーによって決定され、他のオープンソースの大規模モデルのダウンロードを選択することもできます(使用する際には関連するライセンスに従ってください)。
ネットワークの問題により、最初のトレーニング実行中にベースモデルのダウンロードが途中で失敗する場合があります。そのような場合、失敗したタスクをクリックして、トレーニングを続けるために再実行することができます。操作は以下の通りです:
トレーニングを停止するには、GPUメモリを解放する停止ボタンをクリックしてください。
デプロイメントワークフロー
ワークフロー定義ページで、ワークフローをデプロイして実行し、モデルをデプロイします。
独自のモデルをトレーニングしていない場合は、デフォルトパラメータTheBloke/vicuna-7B-1.1-HFでデプロイワークフローを実行して、vicuna-7b
モデルをデプロイできます。以下の画像に示すように:
前のステップでモデルをトレーニングした場合は、自分のモデルをデプロイできます。デプロイ後、独自の大規模モデルを利用できます。スタートアップパラメータは以下のとおりです。前のステップでのモデルのoutput_path
を入力する必要があります:
次に、デプロイされたワークフローインスタンスに入ります。ワークフローインスタンスをクリックして、「デプロイ」プレフィックスを持つワークフローインスタンスをクリックしてください。
右クリックして、「refresh_gradio_web_service」を選択し、タスクログを表示し、大規模モデルのリンクの場所を見つけます。操作は以下のとおりです:
ログには、次のように公開アクセスできるリンクが表示されます。
ここには2つのリンクがあります。オートDLはポート6006を開いているため、0.0.0.0:7860のリンクにはアクセスできません。代わりに、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ワークフローツールであり、オープンソースの大規模モデルを提供していません。オープンソースの大規模
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful