何が新しいのか! |
---|
最新リリース: 2024 kaito 11 月 15 日。kaito v0.3.2。 |
最初のリリース: 2023 kaito 11 月 15 日。kaito v0.1.0。 |
kaitoは、Kubernetes クラスターでの AI/ML モデルの推論やワークロードの調整を自動化するオペレーターです。対象となるモデルは、falcon や phi-3 などのオープンソースの人気の大型モデルです。 kaito仮想マシン インフラストラクチャ上に構築された主流のモデル展開方法論のほとんどと比較して、次のような重要な違いがあります。
kaito使用すると、Kubernetes で大規模な AI 推論モデルをオンボードするワークフローが大幅に簡素化されます。
kaito 、古典的な Kubernetes カスタム リソース定義 (CRD)/コントローラーの設計パターンに従います。ユーザーは、GPU 要件と推論または調整の仕様を記述するworkspace
カスタム リソースを管理します。 kaitoコントローラーは、 workspace
カスタム リソースを調整することでデプロイメントを自動化します。
上図はkaitoアーキテクチャの概要を示しています。その主なコンポーネントは次のとおりです。
workspace
カスタム リソースを調整し、ノードの自動プロビジョニングをトリガーするmachine
(以下で説明) カスタム リソースを作成し、モデルのプリセット構成に基づいて推論または調整ワークロード ( deployment
、 statefulset
またはjob
) を作成します。machine
CRD を使用して、ワークスペース コントローラーと対話します。 Azure Resource Manager REST API と統合して、AKS または AKS Arc クラスターに新しい GPU ノードを追加します。注: GPU プロビジョナーはオープンソースのコンポーネントです。 Karpenter-core API をサポートしている場合は、他のコントローラーで置き換えることができます。
Azure CLI を使用したデプロイについてはここで、Terraform を使用したデプロイについてはここでインストール ガイドを確認してください。
kaitoインストールした後、次のコマンドを実行して falcon-7b 推論サービスを開始できます。
$ cat examples/inference/ kaito _workspace_falcon_7b.yaml
apiVersion: kaito .sh/v1alpha1
kind: Workspace
metadata:
name: workspace-falcon-7b
resource:
instanceType: " Standard_NC12s_v3 "
labelSelector:
matchLabels:
apps: falcon-7b
inference:
preset:
name: " falcon-7b "
$ kubectl apply -f examples/inference/ kaito _workspace_falcon_7b.yaml
ワークスペースのステータスは、次のコマンドを実行することで追跡できます。 WORKSPACEREADY 列がTrue
になると、モデルは正常にデプロイされています。
$ kubectl get workspace workspace-falcon-7b
NAME INSTANCE RESOURCEREADY INFERENCEREADY JOBSTARTED WORKSPACESUCCEEDED AGE
workspace-falcon-7b Standard_NC12s_v3 True True True True 10m
次に、推論サービスのクラスター IP を見つけ、一時的なcurl
ポッドを使用してクラスター内のサービス エンドポイントをテストできます。
$ kubectl get svc workspace-falcon-7b
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
workspace-falcon-7b ClusterIP < CLUSTERIP > < none > 80/TCP,29500/TCP 10m
export CLUSTERIP= $( kubectl get svc workspace-falcon-7b -o jsonpath= " {.spec.clusterIPs[0]} " )
$ kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http:// $CLUSTERIP /chat -H " accept: application/json " -H " Content-Type: application/json " -d " { " prompt " : " YOUR QUESTION HERE " } "
kaito対応モデルの詳しい使い方はこちらをご覧ください。ユーザーが独自のコンテナ化されたモデルをデプロイしたい場合は、ワークスペース カスタム リソースのinference
フィールドにポッド テンプレートを提供できます (詳細については API 定義を参照してください)。コントローラーは、プロビジョニングされたすべての GPU ノードを使用してデプロイメント ワークロードを作成します。現在、コントローラーは自動モデル アップグレードを処理しないことに注意してください。ワークロードが存在しない場合は、プリセット構成に基づいて推論ワークロードのみが作成されます。
kaitoの対応機種は拡大中!新しいサポート対象モデルを追加する方法については、このドキュメントを参照してください。
バージョン v0.3.0 以降、 kaitoモデルの微調整と、推論サービスでの微調整されたアダプターの使用をサポートします。詳細については、チューニング ドキュメントと推論ドキュメントを参照してください。
優先ノードを使用するには、matchLabels の下の labelSelector で指定されたラベルがノードにあることを確認してください。たとえば、labelSelector が次の場合、
labelSelector:
matchLabels:
apps: falcon-7b
次に、ノードにはapps=falcon-7b
というラベルが付けられます。
ホストされたパブリック モデルを使用する場合、ユーザーは既存の推論ワークロード ( StatefulSet
のDeployment
) を手動で削除でき、ワークスペース コントローラーは現在のリリースで定義されている最新のプリセット構成 (イメージ バージョンなど) を使用して新しい推論ワークロードを作成します。プライベート モデルの場合は、仕様内の新しいイメージ バージョンを使用して新しいワークスペースを作成することをお勧めします。
kaito transformer
ランタイムを使用するモデルのプリセット構成を手動でオーバーライドする限定的な機能を提供します。デプロイされたモデルのパラメーターを更新するには、ワークロードStatefulSet
またはDeployment
のいずれか) に対してkubectl edit
実行します。たとえば、 falcon-7b-instruct
デプロイメントで 4 ビット量子化を有効にするには、次を実行します。
kubectl edit deployment workspace-falcon-7b-instruct
デプロイメント仕様内で、コマンド フィールドを見つけて変更します。
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16 --load_in_4bit
現在、ユーザーは次のパラメータを手動で変更できます。
pipeline
: テキスト生成モデルの場合、これはtext-generation
またはconversational
のいずれかになります。load_in_4bit
またはload_in_8bit
: モデルの量子化解像度。他のパラメータをカスタマイズする必要がある場合は、将来の組み込みの可能性のために問題を提出してください。
主な違いは、意図された使用例にあります。 Instruct モデルは、インタラクティブなチャット アプリケーション向けに最適化された微調整バージョンです。これらは、会話コンテキストでのパフォーマンスが向上するため、通常、ほとんどの実装で推奨される選択肢です。一方、非命令モデル、つまり生のモデルは、さらに微調整できるように設計されています。
続きを読む
このプロジェクトは貢献と提案を歓迎します。寄稿するには、寄稿者ライセンス契約 (CLA) に同意する必要があります。寄稿者は、寄稿物を使用する権利を当社に付与する権利を有しており、実際に付与していることを宣言します。詳細については、CNCF の CLA をご覧ください。
プル リクエストを送信すると、CLA ボットが CLA を提供する必要があるかどうかを自動的に判断し、PR を適切に装飾します (ステータス チェック、コメントなど)。ボットが提供する指示に従ってください。 CLA を使用するすべてのリポジトリでこれを 1 回行うだけで済みます。
このプロジェクトは CNCF の CLA を採用しています。https://easycla.lfx.linuxfoundation.org 経由で CLA に電子署名してください。問題が発生した場合は、Linux Foundation サポート Web サイトから Linux Foundation ID グループを使用してチケットを送信できます。
「MIT ライセンス」を参照してください。
kaito Cloud Native Compute Foundation の行動規範を採用しています。詳細については、 kaito行動規範をご覧ください。
" kaito devs" kaito [email protected]