環境の構築と維持
アカウントの作成、RHEL AI の初期化、モデルのダウンロード/整理、提供/チャットのカスタマイズ
概要
第1章 RHEL AI のアカウントの設定 リンクのコピーリンクがクリップボードにコピーされました!
RHEL AI を操作する前に、複数のアカウントを設定する必要があります。
- Red Hat アカウントの作成
- Red Hat の Web サイトに登録することで、Red Hat アカウントを作成できます。Red Hat アカウントの登録 の手順に従ってください。
- Red Hat レジストリーアカウントの作成
Red Hat レジストリーからモデルをダウンロードする前に、レジストリーアカウントを作成し、CLI を使用してログインする必要があります。Web ページで Regenerate Token ボタンを選択すると、アカウントのユーザー名とパスワードを表示できます。
- Registry Service Accounts ページで New Service Account ボタンを選択すると、Red Hat レジストリーアカウントを作成できます。
- CLI 経由でレジストリーアカウントにログインする方法は複数あります。Red Hat コンテナーレジストリーの認証 の手順に従って、マシンにログインします。
- ハイブリッドクラウドデプロイメント用の Red Hat Insights の設定
Red Hat Insights は、デプロイしている環境を可視化するサービスです。また、このプラットフォームは、システムの運用リスクと脆弱性のリスクを特定するのにも役立ちます。Red Hat Insights の詳細は、Red Hat Insights の データとアプリケーションのセキュリティー を参照してください。
アクティベーションキーの表示 の手順に従い、アクティベーションキーと組織パラメーターを使用して Red Hat Insights アカウントを作成できます。
次のコマンドを実行して、マシン上でアカウントを設定できます。
$ sudo rhc connect --organization <org id> --activation-key <created key>RHEL AI を非接続環境で実行するか、Red Hat Insights をオプトアウトするには、次のコマンドを実行します。
$ sudo mkdir -p /etc/ilab $ sudo touch /etc/ilab/insights-opt-out次のコマンドを実行して、永続的な認証情報を有効にし、レジストリーにログインしたままにすることもできます。
$ podman login registry.redhat.io次に、
auth.jsonファイルを/etc/ostree/ディレクトリーに追加します。$ sudo cp /run/user/1000/containers/auth.json /etc/ostree/
これにより、Red Hat Enterprise Linux AI をアップグレードした後も Red Hat レジストリーにログインしたままにできます。
システムが root ユーザーとして設定されている場合は、コマンドを実行するときに sudo を使用する必要はありません。
第2章 InstructLab の初期化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux AI モデルの使用を開始するには、InstructLab 環境を初期化する必要があります。
2.1. RHEL AI 環境の作成 リンクのコピーリンクがクリップボードにコピーされました!
InstructLab 環境を初期化することで、LLM モデルおよび RHEL AI ツールとの対話を開始できます。
AMD マシンのシステムプロファイルはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
- 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
- マシンの root ユーザーアクセス権がある。
手順
オプション: 次のコマンドを実行すると、マシンの情報を表示できます。
$ ilab system info次のコマンドを実行して InstructLab を初期化します。
$ ilab config initRHEL AI CLI は、環境と
config.yamlファイルのセットアップを開始します。CLI はマシンのハードウェアを自動的に検出し、GPU の種類に基づいてシステムプロファイルを選択します。システムプロファイルは、検出されたハードウェアに基づいて、config.yamlファイルに適切なパラメーター値を入力します。プロファイル自動検出の出力例
Generating config file and profiles: /home/user/.config/instructlab/config.yaml /home/user/.local/share/instructlab/internal/system_profiles/ We have detected the NVIDIA H100 X4 profile as an exact match for your system. -------------------------------------------- Initialization completed successfully! You're ready to start using `ilab`. Enjoy! --------------------------------------------CLI がシステムに完全に一致するものを検出しない場合は、プロンプトが表示されたら手動でシステムプロファイルを選択できます。システムに適したハードウェアベンダーと設定を選択します。
システムプロファイルの選択の出力例
Please choose a system profile to use. System profiles apply to all parts of the config file and set hardware specific defaults for each command. First, please select the hardware vendor your system falls into [0] NO SYSTEM PROFILE [1] NVIDIA Enter the number of your choice [0]: 4 You selected: NVIDIA Next, please select the specific hardware configuration that most closely matches your system. [0] No system profile [1] NVIDIA H100 X2 [2] NVIDIA H100 X8 [3] NVIDIA H100 X4 [4] NVIDIA L4 X8 [5] NVIDIA A100 X2 [6] NVIDIA A100 X8 [7] NVIDIA A100 X4 [8] NVIDIA L40S X4 [9] NVIDIA L40S X8 Enter the number of your choice [hit enter for hardware defaults] [0]: 3完了した
ilab config init実行の出力例You selected: /Users/<user>/.local/share/instructlab/internal/system_profiles/nvidia/H100/h100_x4.yaml -------------------------------------------- Initialization completed successfully! You're ready to start using `ilab`. Enjoy! --------------------------------------------2 つのスキルと 1 つのナレッジファイル
qna.yamlを含むスケルトンタクソノミーツリーを使用する場合は、次のコマンドを実行してスケルトンリポジトリーのクローンを作成し、taxonomyディレクトリーに配置します。rm -rf ~/.local/share/instructlab/taxonomy/ ; git clone https://github.com/RedHatOfficial/rhelai-sample-taxonomy.git ~/.local/share/instructlab/taxonomy/誤ったシステムプロファイルが自動検出された場合は、次のコマンドを実行できます。
$ ilab config init --profile <path-to-system-profile>ここでは、以下のようになります。
- <path-to-system-profile>
正しいシステムプロファイルへのパスを指定します。システムプロファイルは
~/.local/share/instructlab/internal/system_profilesパスにあります。プロファイル選択コマンドの例
$ ilab config init --profile ~/.local/share/instructlab/internal/system_profiles/amd/mi300x/mi300x_x8.yaml
InstructLab 環境のディレクトリー構造
├─ ~/.config/instructlab/config.yaml
├─ ~/.cache/instructlab/models/
├─ ~/.local/share/instructlab/datasets
├─ ~/.local/share/instructlab/taxonomy
├─ ~/.local/share/instructlab/phased/<phase1-or-phase2>/checkpoints/
- 1
~/.config/instructlab/config.yaml:config.yamlファイルが含まれます。- 2
~/.cache/instructlab/models/: RHEL AI で生成したモデルの保存出力など、ダウンロードされたすべての大規模言語モデルが含まれます。- 3
~/.local/share/instructlab/datasets/: タクソノミーリポジトリーへの変更に基づいて構築された、SDG フェーズからのデータ出力が含まれます。- 4
~/.local/share/instructlab/taxonomy/: スキルおよびナレッジのデータが含まれます。- 5
~/.local/share/instructlab/phased/<phase1-or-phase2>/checkpoints/: 複数フェーズのトレーニングプロセスの出力が含まれます。
検証
以下のコマンドを実行して、
config.yamlファイル全体を表示できます。$ ilab config show次のコマンドを実行して、
config.yamlファイルを手動で編集することもできます。$ ilab config edit
第3章 大規模言語モデルのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux AI を使用すると、Red Hat と IBM が提供および構築したさまざまな大規模言語モデル (LLM) をカスタマイズしたり、それらとチャットしたりできます。以下のモデルは、Red Hat RHEL AI レジストリーからダウンロードできます。任意のカスタムモデルを S3 バケットにアップロードできます。
| 大規模言語モデル (LLM) | タイプ | サイズ | 目的 | モデルファミリー | NVIDIA アクセラレーターのサポート | AMD Accelerator サポート | Intel Accelerator サポート |
|---|---|---|---|---|---|---|---|
|
| LAB ファインチューニング granite スターターモデル | 16.0 GB | カスタマイズとファインチューニングを行うためのデフォルト Granite 3.1 ベースモデルのバージョン 2 | Granite 3.1 | 一般提供 | 一般提供 | 利用不可 |
|
| LAB によるファインチューニング済み Granite モデル | 16.0 GB | 推論サービング用のデフォルト Granite 3.1 モデルのバージョン 2 | Granite 3.1 | 一般提供 | 一般提供 | 利用不可 |
|
| LAB ファインチューニング granite スターターモデル | 16.0 GB | カスタマイズとファインチューニングを行うためのデフォルト Granite 3.1 ベースモデルのバージョン 2 | Granite 3.1 | 利用不可 | 利用不可 | テクノロジープレビュー |
|
| LAB によるファインチューニング済み Granite モデル | 16.0 GB | 推論サービング用のデフォルト Granite 3.1 モデルのバージョン 2 | Granite 3.1 | 利用不可 | 利用不可 | テクノロジープレビュー |
|
| LAB によるファインチューニング済み Granite コードモデル | 15.0 GB | LAB によるファインチューニング済みの推論サービング用 Granite コードモデル | Granite Code モデル | テクノロジープレビュー | テクノロジープレビュー | テクノロジープレビュー |
|
| Granite によるファインチューニング済みコードモデル | 15.0 GB | 推論サービング用の Granite コードモデル | Granite Code モデル | テクノロジープレビュー | テクノロジープレビュー | テクノロジープレビュー |
|
| デフォルトの教師モデル | 87.0 GB | 合成データ生成 (SDG) を実行するためのデフォルトの教師モデル | Mixtral | 一般提供 | 一般提供 | テクノロジープレビュー |
|
| オプションの教師モデル | 74.0 GB | 合成データ生成 (SDG) を実行するためのオプションの教師モデル | Llama | テクノロジープレビュー | 利用不可 | 利用不可 |
|
| 評価ジャッジモデル | 87.0 GB | 複数フェーズのトレーニングと評価を行うためのジャッジモデル | Prometheus 2 | 一般提供 | 一般提供 | テクノロジープレビュー |
granite-8b-code-instruct または granite-8b-code-base 大規模言語モデル (LLM) の使用は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Granite LLM のカスタマイズに必要なモデル
-
ハードウェアベンダーに応じた
granite-7b-starterまたはgranite-8b-starter-v1ベース LLM -
SDG 用の
mixtral-8x7b-instruct-v0-1教師モデル -
トレーニングと評価を行うための
prometheus-8x7b-v2-0ジャッジモデル
LLM のカスタマイズに必要な追加のツール
低ランク適応 (LoRA) アダプターは、合成データ生成 (SDG) プロセスの効率を高めます。
-
SDG 用の
skills-adapter-v3LoRA 階層化スキルアダプター SDG 用の
knowledge-adapter-v3LoRA 階層化ナレッジアダプターアダプターをダウンロードするコマンドの例
$ ilab model download --repository docker://registry.redhat.io/rhelai1/knowledge-adapter-v3 --release latest
LoRA 階層化アダプターは、ilab model list コマンドの出力には表示されません。ls ~/.cache/instructlab/models フォルダーに、skills-adapter-v3 ファイルと knowledge-adapter-v3 ファイルが表示されます。
3.1. Red Hat リポジトリーからのモデルのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat および IBM が作成した追加のオプションモデルをダウンロードできます。
前提条件
- 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
- InstructLab を初期化している。
- Red Hat レジストリーアカウントを作成し、マシンにログインしている。
- マシンの root ユーザーアクセス権がある。
手順
追加の LLM モデルをダウンロードするには、次のコマンドを実行します。
$ ilab model download --repository docker://<repository_and_model> --release <release>ここでは、以下のようになります。
- <repository_and_model>
-
モデルとモデルのリポジトリーのロケーションを指定します。モデルには、
registry.redhat.io/rhelai1/リポジトリーからアクセスできます。 - <release>
-
モデルのバージョンを指定します。RHEL AI バージョン 1.5 でサポートされているモデルの場合は
1.5に設定します。モデルの最新バージョンの場合は、latestに設定します。
コマンドの例
$ ilab model download --repository docker://registry.redhat.io/rhelai1/granite-3.1-8b-starter-v1 --release latest
検証
次のコマンドを使用すると、トレーニング後の新しいモデルなど、ダウンロードしたすべてのモデルをシステム上で表示できます。
$ ilab model list出力例
+-----------------------------------+---------------------+---------+ | Model Name | Last Modified | Size | +-----------------------------------+---------------------+---------+ | models/prometheus-8x7b-v2-0 | 2024-08-09 13:28:50 | 87.0 GB| | models/mixtral-8x7b-instruct-v0-1 | 2024-08-09 13:28:24 | 87.0 GB| | models/granite-3.1-8b-starter-v1 | 2024-08-09 14:28:40 | 16.6 GB| | models/granite-3.1-8b-lab-v1 | 2024-08-09 14:40:35 | 16.6 GB| +-----------------------------------+---------------------+---------+次のコマンドを実行して、
ls ~/.cache/instructlab/modelsフォルダーにダウンロードしたモデルをリスト表示することもできます。$ ls ~/.cache/instructlab/models出力例
granite-3.1-8b-starter-v1 granite-3.1-8b-lab-v1
第4章 モデル管理 リンクのコピーリンクがクリップボードにコピーされました!
RHEL AI でカスタムまたはダウンロードしたモデルを整理および管理する方法は複数あります。
4.1. モデルのレジストリーへのアップロード リンクのコピーリンクがクリップボードにコピーされました!
モデルのファインチューニングした後、モデルを外部レジストリーにアップロードできます。RHEL AI は現在、AWS S3 バケットへのモデルのアップロードをサポートしています。
前提条件
- 選択したプラットフォームに RHEL AI をインストールしている。
- InstructLab を初期化している。
- 選択したレジストリーにログインしている。
手順
次のコマンドを使用して、モデルを特定のレジストリーにアップロードできます。
$ ilab model upload --model <name-of-model> --destination <registry-location> --dest-type <registry-type>ここでは、以下のようになります。
- <name-of-model>
-
アップロードするチェックポイント名を指定します。たとえば、
--model samples_0801などです。チェックポイントへのパスを指定することもできます。 - <registry-location>
-
モデルのアップロード先を指定します。たとえば、
--destination example-s3-bucketなどです。 - <registry-type>
-
モデルタイプを指定します。有効な値は
s3などです。
s3 バケットへの
ilab model uploadコマンドの例$ ilab model upload --model samples_0801 --destination example-s3-bucket --dest-type s3
第5章 モデルのサービング (提供) およびモデルとのチャット リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux AI 上のさまざまなモデルと対話するには、モデルをサービングしてサーバー上でホストし、その後モデルとチャットする必要があります。
5.1. モデルのサービング (提供) リンクのコピーリンクがクリップボードにコピーされました!
モデルと対話するには、サービング中にマシン内でモデルを有効にする必要があります。ilab model serve コマンドは、モデルとチャットできる vLLM サーバーを起動します。
前提条件
- 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
- InstructLab を初期化している。
- 希望の Granite LLM がインストールされている。
- マシンの root ユーザーアクセス権がある。
手順
モデルを指定しない場合は、次のコマンドを実行して、デフォルトのモデル
granite-7b-redhat-labを提供できます。$ ilab model serve特定のモデルをサービングするには、次のコマンドを実行します。
$ ilab model serve --model-path <model-path>コマンドの例
$ ilab model serve --model-path ~/.cache/instructlab/models/granite-8b-code-instructモデルが提供され、準備が整ったときの出力例
INFO 2024-03-02 02:21:11,352 lab.py:201 Using model 'models/granite-8b-code-instruct' with -1 gpu-layers and 4096 max context size. Starting server process After application startup complete see http://127.0.0.1:8000/docs for API. Press CTRL+C to shut down the server.
5.1.1. オプション: ilab model serve をサービスとして実行する リンクのコピーリンクがクリップボードにコピーされました!
ilab model serve コマンドが実行中のサービスとして実行されるように、systemd サービスを設定できます。systemd サービスは、バックグラウンドで ilab model serve コマンドを実行し、クラッシュまたは失敗した場合に再起動します。システムの起動時にサービスが起動するように設定できます。
前提条件
- Red Hat Enterprise Linux AI イメージがベアメタルにインストールされている。
- InstructLab を初期化している。
- 使用する Granite LLM をダウンロードしている。
- マシンの root ユーザーアクセス権がある。
手順
次のコマンドを実行して、
systemdユーザーサービスのディレクトリーを作成します。$ mkdir -p $HOME/.config/systemd/user次の例の設定を使用して、
systemdサービスファイルを作成します。$ cat << EOF > $HOME/.config/systemd/user/ilab-serve.service [Unit] Description=ilab model serve service [Install] WantedBy=multi-user.target default.target1 [Service] ExecStart=ilab model serve --model-family granite Restart=always EOF- 1
- 起動時にデフォルトで開始することを指定します。
次のコマンドを実行して、
systemdマネージャー設定を再ロードします。$ systemctl --user daemon-reload次のコマンドを実行して、
ilab model servesystemdサービスを開始します。$ systemctl --user start ilab-serve.service以下のコマンドを実行すると、サービスが実行中であることを確認できます。
$ systemctl --user status ilab-serve.service以下のコマンドを実行すると、サービスログを確認できます。
$ journalctl --user-unit ilab-serve.serviceシステムの起動時にサービスを起動できるようにするには、以下のコマンドを実行します。
$ sudo loginctl enable-lingerオプション:
systemdサービスを維持するために実行できるオプションのコマンドがいくつかあります。次のコマンドを実行すると、ilab-serve システムサービスを停止できます。
$ systemctl --user stop ilab-serve.service-
$HOME/.config/systemd/user/ilab-serve.serviceファイルから"WantedBy=multi-user.target default.target"を削除して、起動時にサービスが開始しないようにすることができます。
5.1.2. オプション: セキュアなエンドポイントからモデルへのアクセスを許可する リンクのコピーリンクがクリップボードにコピーされました!
systemd サービスを作成し、セキュアなエンドポイントを公開する nginx リバースプロキシーを設定することで、推論エンドポイントを提供し、他のユーザーがセキュアな接続で Red Hat Enterprise Linux AI で提供されるモデルと対話できるように指定できます。これにより、セキュアなエンドポイントを他のユーザーと共有し、ネットワーク経由でモデルとチャットできるようになります。
次の手順では自己署名証明書を使用しますが、信頼できる認証局 (CA) が発行した証明書を使用することを推奨します。
次の手順は、ベアメタルプラットフォームでのみサポートされます。
前提条件
- Red Hat Enterprise Linux AI イメージがベアメタルにインストールされている。
- InstructLab を初期化している。
- 使用する Granite LLM をダウンロードしている。
- マシンの root ユーザーアクセス権がある。
手順
次のコマンドを実行して、証明書ファイルと鍵のディレクトリーを作成します。
$ mkdir -p `pwd`/nginx/ssl/次のコマンドを実行して、適切な設定を指定して OpenSSL 設定ファイルを作成します。
$ cat > openssl.cnf <<EOL [ req ] default_bits = 2048 distinguished_name = <req-distinguished-name>1 x509_extensions = v3_req prompt = no [ req_distinguished_name ] C = US ST = California L = San Francisco O = My Company OU = My Division CN = rhelai.redhat.com [ v3_req ] subjectAltName = <alt-names>2 basicConstraints = critical, CA:true subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer [ alt_names ] DNS.1 = rhelai.redhat.com3 DNS.2 = www.rhelai.redhat.com4 次のコマンドを使用して、サブジェクト代替名 (SAN) が有効になっている自己署名証明書を生成します。
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout `pwd`/nginx/ssl/rhelai.redhat.com.key -out `pwd`/nginx/ssl/rhelai.redhat.com.crt -config openssl.cnf$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout次のコマンドを実行して、Nginx 設定ファイルを作成し、
pwd/nginx/conf.dに追加します。mkdir -p `pwd`/nginx/conf.d echo 'server { listen 8443 ssl; server_name <rhelai.redhat.com>1 ssl_certificate /etc/nginx/ssl/rhelai.redhat.com.crt; ssl_certificate_key /etc/nginx/ssl/rhelai.redhat.com.key; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ' > `pwd`/nginx/conf.d/rhelai.redhat.com.conf- 1
- サーバーの名前を指定します。この例では、サーバー名は
rhelai.redhat.comです。
以下のコマンドを実行して、新しい設定で Nginx コンテナーを実行します。
$ podman run --net host -v `pwd`/nginx/conf.d:/etc/nginx/conf.d:ro,Z -v `pwd`/nginx/ssl:/etc/nginx/ssl:ro,Z nginxポート 443 を使用する場合は、root ユーザーとして
podman runコマンドを実行する必要があります。セキュアなエンドポイント URL を使用して、サービング中の ilab マシンに接続できるようになりました。以下はコマンド例となります。
$ ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url次のコマンドを使用して、サービング中の RHEL AI マシンに接続することもできます。
$ curl --location 'https://rhelai.redhat.com:8443/v1' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <api-key>' \ --data '{ "model": "/var/home/cloud-user/.cache/instructlab/models/granite-7b-redhat-lab", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] }' | jq .ここでは、以下のようになります。
- <api-key>
- API キーを指定します。「モデルとチャットするための API キーの作成」の手順に従って、独自の API キーを作成できます。
オプション: サーバー証明書を取得して、Certifi CA バンドルに追加することもできます。
次のコマンドを実行してサーバー証明書を取得します。
$ openssl s_client -connect rhelai.redhat.com:8443 </dev/null 2>/dev/null | openssl x509 -outform PEM > server.crt証明書をシステムの信頼できる CA ストレージディレクトリーにコピーし、次のコマンドを使用して CA トラストストアを更新します。
$ sudo cp server.crt /etc/pki/ca-trust/source/anchors/$ sudo update-ca-trust次のコマンドを実行すると、証明書を Certifi CA バンドルに追加できます。
$ cat server.crt >> $(python -m certifi)自己署名証明書を使用して
ilab model chatを実行できるようになりました。以下はコマンド例となります。$ ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url https://rhelai.redhat.com:8443/v1
5.2. モデルとのチャット リンクのコピーリンクがクリップボードにコピーされました!
モデルをサービングしたら、モデルにチャットできるようになります。
チャットしているモデルは、サービング中のモデルと一致する必要があります。デフォルトの config.yaml ファイルでは、granite-7b-redhat-lab モデルがサービングとチャットのデフォルトになります。
前提条件
- 起動可能なコンテナーイメージを使用して RHEL AI をインストールしている。
- InstructLab を初期化している。
- 使用する Granite LLM をダウンロードしている。
- モデルをサービングしている。
- マシンの root ユーザーアクセス権がある。
手順
- 1 つのターミナルでモデルをサービングしているため、モデルとチャットするには別のターミナルウィンドウを開く必要があります。
デフォルトのモデルとチャットするには、次のコマンドを実行します。
$ ilab model chat特定のモデルとチャットするには、次のコマンドを実行します。
$ ilab model chat --model <model-path>コマンドの例
$ ilab model chat --model ~/.cache/instructlab/models/granite-8b-code-instruct
チャットボットの出力例
$ ilab model chat
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────── system ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Welcome to InstructLab Chat w/ GRANITE-8B-CODE-INSTRUCT (type /h for help) │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
>>> [S][default]
+ チャットボットを終了するには exit と入力します。
5.2.1. オプション: モデルとチャットするために API キーを作成する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、ilab CLI は認証を使用しません。サーバーをインターネットに公開する場合は、次の手順に従ってサーバーに接続する API キーを作成できます。
前提条件
- Red Hat Enterprise Linux AI イメージがベアメタルにインストールされている。
- InstructLab を初期化している。
- 使用する Granite LLM をダウンロードしている。
- マシンの root ユーザーアクセス権がある。
手順
次のコマンドを実行して、
$VLLM_API_KEYパラメーターに保持される API キーを作成します。$ export VLLM_API_KEY=$(python -c 'import secrets; print(secrets.token_urlsafe())')次のコマンドを実行すると、API キーを表示できます。
$ echo $VLLM_API_KEY次のコマンドを実行して
config.yamlを更新します。$ ilab config editconfig.yamlファイルのvllm_argsセクションに次のパラメーターを追加します。serve: vllm: vllm_args: - --api-key - <api-key-string>ここでは、以下のようになります。
- <api-key-string>
- API キー文字列を指定します。
次のコマンドを実行すると、サーバーが API キー認証を使用していることを確認できます。
$ ilab model chat次に、ユーザーに権限がないことを示す以下のエラーが表示されます。
openai.AuthenticationError: Error code: 401 - {'error': 'Unauthorized'}以下のコマンドを実行して、API キーが機能していることを確認します。
$ ilab model chat -m granite-7b-redhat-lab --endpoint-url https://inference.rhelai.com/v1 --api-key $VLLM_API_KEY出力例
$ ilab model chat ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────── system ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ Welcome to InstructLab Chat w/ GRANITE-7B-LAB (type /h for help) │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ >>> [S][default]