規模と効率性を考慮して構築された宣言型ディープ ラーニング フレームワーク。
重要
私たちのコミュニティは Discord に移行しました -- ぜひご参加ください。
Ludwig は、 LLMやその他のディープ ニューラル ネットワークなどのカスタムAI モデルを構築するためのローコードフレームワークです。
主な特徴:
Ludwig は Linux Foundation AI & Data によってホストされています。
PyPiからインストールします。 Ludwig には Python 3.8 以降が必要であることに注意してください。
pip install ludwig
または、オプションの依存関係をすべて指定してインストールします。
pip install ludwig[full]
詳しいインストール手順については、「コントリビュート」を参照してください。
Ludwig 0.8 の機能の一部を簡単に覗いてみませんか?この Colab ノートブックをチェックしてください
Llama-2 または Mistral を微調整したいですか?これらのノートブックをチェックしてください。
完全なチュートリアルについては、公式のスタート ガイドを確認するか、エンドツーエンドの例をご覧ください。
チャットボットのような指示に従うように、事前トレーニング済みの LLaMA-2-7b 大規模言語モデルを微調整してみましょう (「指示チューニング」)。
Stanford Alpaca データセットを使用します。これは、次のようなテーブル形式のファイルとしてフォーマットされます。
命令 | 入力 | 出力 |
---|---|---|
健康を維持するための3つのヒントを教えてください。 | 1.バランスの取れた食事をとり、次のことを心がけてください。 | |
以下の項目を順番に並べると・・・ | ケーキ、私、食べる | ケーキを食べています。 |
有名人についての紹介文を書きます... | ミシェル・オバマ | ミシェル・オバマはインスピレーションに満ちた女性であり、... |
... | ... | ... |
次の内容を使用して、 model.yaml
という名前の YAML 構成ファイルを作成します。
model_type : llm
base_model : meta-llama/Llama-2-7b-hf
quantization :
bits : 4
adapter :
type : lora
prompt :
template : |
Below is an instruction that describes a task, paired with an input that may provide further context.
Write a response that appropriately completes the request.
### Instruction:
{instruction}
### Input:
{input}
### Response:
input_features :
- name : prompt
type : text
output_features :
- name : output
type : text
trainer :
type : finetune
learning_rate : 0.0001
batch_size : 1
gradient_accumulation_steps : 16
epochs : 3
learning_rate_scheduler :
decay : cosine
warmup_fraction : 0.01
preprocessing :
sample_ratio : 0.1
backend :
type : local
それでは、モデルをトレーニングしましょう。
export HUGGING_FACE_HUB_TOKEN = " <api_token> "
ludwig train --config model.yaml --dataset " ludwig://alpaca "
Rotten Tomatoes での特定の映画評論家のレビューが肯定的か否定的かを予測するニューラル ネットワークを構築してみましょう。
データセットは次のような CSV ファイルになります。
映画のタイトル | コンテンツ評価 | ジャンル | ランタイム | トップ批評家 | レビューコンテンツ | 推奨 |
---|---|---|---|---|---|---|
私たちを悪から救い出してください | R | アクション & アドベンチャー、ホラー | 117.0 | 真実 | スコット・デリクソン監督と共同脚本家のポール・ハリス・ボードマンは、平凡な恐怖を伴う日常的な手順を伝えます。 | 0 |
バーバラ | PG-13 | アートハウス&インターナショナル、ドラマ | 105.0 | 間違い | この感動的な物語の中で、バーバラはどういうわけか自分の原則、人間性、勇気を持ち続け、共産主義者が人生を破壊しようとしている反体制派の 10 代の少女を救うために戦います。 | 1 |
恐ろしい上司 | R | コメディ | 98.0 | 間違い | これらのボスは、殺人や永続的な滑稽な思い出を正当化することができず、素晴らしかったかもしれない茶番劇を致命的に損ない、ただ平凡に終わってしまいます。 | 0 |
... | ... | ... | ... | ... | ... | ... |
ここからデータセットのサンプルをダウンロードします。
wget https://ludwig.ai/latest/data/rotten_tomatoes.csv
次に、次の内容を含む、 model.yaml
という名前の YAML 構成ファイルを作成します。
input_features :
- name : genres
type : set
preprocessing :
tokenizer : comma
- name : content_rating
type : category
- name : top_critic
type : binary
- name : runtime
type : number
- name : review_content
type : text
encoder :
type : embed
output_features :
- name : recommended
type : binary
それでおしまい!次に、モデルをトレーニングしましょう。
ludwig train --config model.yaml --dataset rotten_tomatoes.csv
楽しいモデリング
Ludwig をデータに適用してみてください。ご質問がある場合は、Discord にお問い合わせください。
最小限の機械学習定型文
Ludwig は機械学習のエンジニアリングの複雑さをすぐに処理できるため、研究科学者が最高の抽象レベルでのモデルの構築に集中できるようになります。データの前処理、ハイパーパラメータの最適化、デバイス管理、 torch.nn.Module
モデルの分散トレーニングは完全に無料で利用できます。
ベンチマークを簡単に構築
最先端のベースラインを作成し、それを新しいモデルと比較することは、簡単な構成変更です。
新しいアーキテクチャを複数の問題やデータセットに簡単に適用
Ludwig がサポートする広範なタスクとデータセット全体に新しいモデルを適用します。 Ludwig には、簡単な構成だけで複数のデータセットにわたる複数のモデルを使用した実験を実行できる、あらゆるユーザーがアクセスできる完全なベンチマーク ツールキットが含まれています。
高度に構成可能なデータの前処理、モデリング、およびメトリクス
モデル アーキテクチャ、トレーニング ループ、ハイパーパラメータ検索、バックエンド インフラストラクチャのあらゆる側面を宣言型構成の追加フィールドとして変更して、要件を満たすようにパイプラインをカスタマイズできます。構成できる内容の詳細については、Ludwig 構成ドキュメントを確認してください。
すぐに使えるマルチモーダル、マルチタスク学習
コードを書かずに、表形式のデータ、テキスト、画像、さらには音声を組み合わせて複雑なモデル構成に組み込むことができます。
豊富なモデルのエクスポートと追跡
Tensorboard、Comet ML、Weights & Biases、MLFlow、Aim Stack などのツールを使用して、すべてのトライアルとメトリクスを自動的に追跡します。
トレーニングをマルチ GPU、マルチノード クラスターに自動的にスケールします
コードを変更することなく、ローカル マシンでのトレーニングからクラウドに移行できます。
事前トレーニングされた Huggingface Transformers を含む、最先端のモデル用のローコード インターフェイス
Ludwig は、Huggingface Transformers で利用可能なモデルなど、事前トレーニングされたモデルともネイティブに統合します。ユーザーは、コードをまったく記述することなく、最先端の事前トレーニング済み PyTorch モデルの膨大なコレクションから選択して使用できます。たとえば、Ludwig を使用して BERT ベースの感情分析モデルをトレーニングするのは次のように簡単です。
ludwig train --dataset sst5 --config_str " {input_features: [{name: sentence, type: text, encoder: bert}], output_features: [{name: label, type: category}]} "
AutoML 用のローコード インターフェイス
Ludwig AutoML を使用すると、ユーザーはデータセット、ターゲット列、時間予算を指定するだけで、トレーニングされたモデルを取得できます。
auto_train_results = ludwig . automl . auto_train ( dataset = my_dataset_df , target = target_column_name , time_limit_s = 7200 )
簡単な本番化
Ludwig を使用すると、GPU などでディープ ラーニング モデルを簡単に提供できます。トレーニングされた Ludwig モデルの REST API を起動します。
ludwig serve --model_path=/path/to/model
Ludwig は、効率的な Torchscript バンドルへのモデルのエクスポートをサポートしています。
ludwig export_torchscript -–model_path=/path/to/model
Ludwig、宣言的 ML、および Ludwig の SoTA ベンチマークに関する出版物を読んでください。
Ludwig の仕組み、開始方法、その他の例を学習してください。
貢献に興味がある場合、質問、コメント、共有したい考えがある場合、または単に知りたい場合は、コミュニティ Discord への参加を検討し、X でフォローしてください。
Ludwig は、アクティブに管理されているオープンソース プロジェクトであり、皆さんと同じような人々からの貢献に依存しています。 Ludwig をさらにアクセスしやすく、誰もが使える機能豊富なフレームワークにするために、Ludwig コントリビューターのアクティブなグループに参加することを検討してください。