0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud の ROKS での watsonx.ai ソフトウェアのインストール成功手順の紹介

0
Last updated at Posted at 2025-12-25

はじめに

本記事は、watsonx.ai ソフトウェアを IBM Cloud 上のRed Hat OpenShift コンテナプラットフォームにインストールして利用する際の環境構築の手順について簡潔に紹介しています。

免責事項
本記事は、2025年9月18日時点の公開資料をもとに筆者がインストールに成功した手順を紹介した内容です。本記事の内容をもとに意思決定を行う場合は、ご自身の責任において実施してください。本記事の利用によるいかなる損害や不利益についても一切の責任を負いません。

前提

  • IBM Software Hub のドキュメントで事前にプランニング済み
  • Red Hat OpenSfift: 4.17_361550
  • Worker pools
    • (48vCPU, 240GB) * 2 nodes for GPU
      • GPU: gx3.48x240.2l40s
      • 2nd Storage:300GB/5iops-tier
      • OS: RHCOS
    • (16 VCPUs, 64 GB) * 3 nodes for ODF
      • RHCOS
  • IBM Software Hub: 5.2.1
  • Red Hat OpenShift AI: 2.19.1
  • Worker Zone: jp-tok-1
  • watsonx.ai: lightweight engine
  • 基盤モデル: llama-3-2-11b-vision-instruct (2xL40S supported)
  • 埋め込みモデル: multilingual-e5-large

0. IBM Cloud 上でのいくつかの予備的な設定作業

  • Resourece Group
  • Access Group
  • VPC
  • Subnets
  • Floating IP
  • Virtual Network Interface
  • Key
  • VSI

1. クライアント・ワークステーション(踏み台サーバー)のセットアップ

1.1. IBM Software Hub CLI のインストール

ドキュメントの手順に従います。

1.2. OpenShift CLI のインストール

ドキュメントの手順に従います。

1.3. IBM Cloud CLI のインストール

ご参考:https://cloud.ibm.com/docs/cli?topic=cli-getting-started

2. IBM Software Hub のためのクラスターのセットアップ

2.1. IBM Software Hub のための Red Hat OpenShift Container Platform のインストール

まず最初に、クラスターを作ります:

  1. IBM Cloudにログインします。
  2. 左上部にあるハンバーガーメニューから、Containers を選びます。
  3. 左側のペーンで, Cluster management をクリックし、さらに Cluster をクリックします。
  4. Create Cluster ボタンを押します。
  5. 下にオプションを選択し、Create ボタンを押します:
    • Orchetrator: Red Hat OpenShift
    • Infrastructure: VPC
    • Virtual private cloud: (select a predefined VPC)
    • Location: jo-tok-1 (with a predifined public gateway applied)
    • OpenShift version: 4.17.36
    • OpenShift Container Platform (OCP) license: Apply my OCP entitlement
    • Worker pool:
      • (fill in a workerpool name)
      • worker node per zone:2
      • Change flavor:
        • gx3.48x240.2l40s - 48 vCPU 240GB RAM
        • Virtual - shared
        • x86-64
        • RHCOS
        • 2nd storage: 300gb.5iops-tier
    • Worker pool encryption:On
    • Netowrk settings: both private and public endpoints
    • Internal Registry: (select a predifined COS)
    • Security:
      • Outbound trafic protection: On
      • Cluster encryption: On (with a predefined route key applided)
      • Ingress secrets management: On
      • VPC security group: Off
    • Cluster details
      • (fill in a cluster name)
      • Resource Group: (select a predefined resource group)
    • Integrations
      • Activity Tracking: On
      • Logging: On
      • Monitoring: On
      • Workload Protection: On
  6. クラスターが作成されるのをしばらく待ちます。

次に、ODF用のワーカー・プールをクラスターに追加します:

  1. クラスターのWebページの左側ペーンで、Worker pools を選択します。
  2. ODF 用の worker pool を追加するため、Add+ ボタンを押します。
  3. 以下のオプションを選択した後に、Create ボタンを押します:
    • Worker pool name: (ODF 用 worker pool の名前を入力)
    • Worker zones and subnets: jp-tok-1 (事前に定義しておいた public gateway を適用)
    • Worker nodes:
      • Worker nodes per zone:3
      • Change flavor:
        • bx2.16x64 - 16 vCPUs 64GB RAM
        • Virtual - shared
        • x86-64
        • RHCOS
    • Worker pool encryption: On
    • OpenShift Container Platform (OCP) license: OCP エンタイトルメントを適用
  4. ODF 用 worker pool が作られるのを待ちます。

2.2. Installing the Red Hat OpenShift AI add-on 手順にある Before-you-begin 手順を適用

  1. IBM Cloud のクラスターの Web ページにあるボタンをクリックして、OpenShift の Web コンソールを開きます。
    • OpenShift の web コンソールの左側ペーンで、Operators > OperatorHub へとクリックして進むと、Operators が見られるかどうか確認する。
    • もし、Operatorが一つもみられない場合は、次の手順に進む。
  2. アウトバウンド・トラフィック保護を無効にする:
    ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER
    
  3. あなたのクラスター上の OperatorHub を有効にする:
    oc patch operatorhub cluster --type json -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": false}]'
    
  4. しばらく時間をおくかWebページをリロードすると、OperatorHub 内に多くの operators が見えるようになります。

2.3. Red Hat OpenShift Container Platform cert-manager Operator のインストール

ドキュメントの手順に従います。

2.4. IBM Software Hub のための persistent storage のインストール

Red Hat OpenShift Data Foundation をインストールします。

  1. IBM CloudのWebコンソール内のクラスターウェブページで、ページ底部にある「Available to install」セクションのOpenShift Data Foundationタイルをクリックしてください。
  2. 以下のオプションを選択し、「Create」ボタンを押してください:
    • Version: (default)
    • Plan: 拡張
    • Storage Type: Remote provisioning
    • Backing storage
      • NooBaa multicloud gateway deploy: チェックする
      • Enable NooBaa public load balancer: チェックする
        -Capacity and worker nodes
      • Worker pool: (ODF 用 worker pool 名を入力)
  3. Install をクリックする。

3. IBM Software Hub をインストールするのに必要な情報を集める

3.1. IBM Software Hub のための IBM エンタイトルメント API キーの取得

ドキュメントに従います。

3.2. インストールする components の決定

ドキュメントに従います。

  • クラスター全体にまたがるコンポーネント:
    • License Service
    • Scheduling service
  • IBM Software Hub インスタンスにインストールする予定のサービス:
    • watsonx.ai

3.3. インストール環境変数のセットアップ

ドキュメントに従います。
例:

#===============================================================================
# IBM Software Hub installation variables
#===============================================================================

# ------------------------------------------------------------------------------
# Client workstation 
# ------------------------------------------------------------------------------
# Set the following variables if you want to override the default behavior of the IBM Software Hub CLI.
#
# To export these variables, you must uncomment each command in this section.

export CPD_CLI_MANAGE_WORKSPACE=/root/cpd-cli-linux-EE-14.2.1-2542/cpd-cli-workspace/olm-utils-workspace/
# export OLM_UTILS_LAUNCH_ARGS=<enter launch arguments>

export PATH=/root/cpd-cli-linux-EE-14.2.1-2542/:$PATH

# ------------------------------------------------------------------------------
# Cluster
# ------------------------------------------------------------------------------

export OCP_URL=<MASKED>
export OPENSHIFT_TYPE=roks
export IMAGE_ARCH=amd64
# export OCP_USERNAME=<enter your username>
# export OCP_PASSWORD=<enter your password>
export OCP_TOKEN=<MASKED>
export SERVER_ARGUMENTS="--server=${OCP_URL}"
# export LOGIN_ARGUMENTS="--username=${OCP_USERNAME} --password=${OCP_PASSWORD}"
export LOGIN_ARGUMENTS="--token=${OCP_TOKEN}"
export CPDM_OC_LOGIN="cpd-cli manage login-to-ocp ${SERVER_ARGUMENTS} ${LOGIN_ARGUMENTS}"
export OC_LOGIN="oc login ${SERVER_ARGUMENTS} ${LOGIN_ARGUMENTS}"


# ------------------------------------------------------------------------------
# Proxy server
# ------------------------------------------------------------------------------

# export PROXY_HOST=<enter your proxy server hostname>
# export PROXY_PORT=<enter your proxy server port number>
# export PROXY_USER=<enter your proxy server username>
# export PROXY_PASSWORD=<enter your proxy server password>
# export NO_PROXY_LIST=<a comma-separated list of domain names>


# ------------------------------------------------------------------------------
# Projects
# ------------------------------------------------------------------------------

export PROJECT_CERT_MANAGER=ibm-cert-manager
export PROJECT_LICENSE_SERVICE=ibm-licensing
#export PROJECT_LICENSE_SERVICE=cpd-license
export PROJECT_SCHEDULING_SERVICE=ibm-cpd-scheduler
#export PROJECT_SCHEDULING_SERVICE=cpd-scheduling
# export PROJECT_IBM_EVENTS=<enter your IBM Events Operator project>
# export PROJECT_PRIVILEGED_MONITORING_SERVICE=<enter your privileged monitoring service project>
export PROJECT_CPD_INST_OPERATORS=cpd-operators
export PROJECT_CPD_INST_OPERANDS=cpd-watsonx
# export PROJECT_CPD_INSTANCE_TETHERED=<enter your tethered project>
# export PROJECT_CPD_INSTANCE_TETHERED_LIST=<a comma-separated list of tethered projects>



# ------------------------------------------------------------------------------
# Storage
# ------------------------------------------------------------------------------

export STG_CLASS_BLOCK=ocs-storagecluster-ceph-rbd
export STG_CLASS_FILE=ocs-storagecluster-cephfs

# ------------------------------------------------------------------------------
# IBM Entitled Registry
# ------------------------------------------------------------------------------

export IBM_ENTITLEMENT_KEY=<MASKED>

# ------------------------------------------------------------------------------
# Private container registry
# ------------------------------------------------------------------------------
# Set the following variables if you mirror images to a private container registry.
#
# To export these variables, you must uncomment each command in this section.

# export PRIVATE_REGISTRY_LOCATION=<enter the location of your private container registry>
# export PRIVATE_REGISTRY_PUSH_USER=<enter the username of a user that can push to the registry>
# export PRIVATE_REGISTRY_PUSH_PASSWORD=<enter the password of the user that can push to the registry>
# export PRIVATE_REGISTRY_PULL_USER=<enter the username of a user that can pull from the registry>
# export PRIVATE_REGISTRY_PULL_PASSWORD=<enter the password of the user that can pull from the registry>


# ------------------------------------------------------------------------------
# IBM Software Hub version
# ------------------------------------------------------------------------------

export VERSION=5.2.1


# ------------------------------------------------------------------------------
# Components
# ------------------------------------------------------------------------------

export COMPONENTS=ibm-licensing,cpfs,cpd_platform,watsonx_ai
# export COMPONENTS_TO_SKIP=<component-ID-1>,<component-ID-2>
# export IMAGE_GROUPS=<image-group-1>,<image-group-2>


# ------------------------------------------------------------------------------
# Red Hat OpenShift AI
# ------------------------------------------------------------------------------

export ODS_OPERATOR_NS=redhat-ods-operator
export CHANNEL_VERSION=stable-2.19
export DSC_INIT_NAME=default-dsci
export DS_CLUSTER_NAME=default-dsc




# ------------------------------------------------------------------------------
# CPD Information
# ------------------------------------------------------------------------------

export CPD_URL=<MASKED>
export CPDUSER=<MASKED>
export CPDUSER_PASSWORD=<MASKED>

4. IBM Software Hub のためのクラスターを準備する

4.1. IBM Software Hub のための global image pull secret の更新

  1. ドキュメントに目を通してください。ただし、少しわかりにくいため、以下の手順で進めます。

  2. cpd-cli で Red Hat® OpenShift® Container Platform クラスターにログインします。

    ${CPDM_OC_LOGIN}
    
  3. 適切なコマンドを実行して、IBM Entitled Registry のための global image pull secret を更新します:

    cpd-cli manage add-icr-cred-to-global-pull-secret \
    --entitled_registry_key=${IBM_ENTITLEMENT_KEY}
    
  4. 適切な daemonset を作成する
    ご参考: Updating the global pull secret

    cat <<'EOF' | oc create -f -
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
    name: update-docker-config
    namespace: openshift-config
    labels:
        app: update-docker-config
    spec:
    selector:
        matchLabels:
        name: update-docker-config
    template:
        metadata:
        labels:
            name: update-docker-config
        spec:
        initContainers:
            - command: ["/bin/sh", "-c"]
            args:
                - >
                CONFIG_PATH=/var/lib/kubelet;
                echo "Backing up or restoring config.json";
                [[ -s $CONFIG_PATH/config.json ]] && cp $CONFIG_PATH/config.json $CONFIG_PATH/config.json.bak || cp $CONFIG_PATH/config.json.bak $CONFIG_PATH/config.json;
                echo "Merging secret with config.json";
                /host/usr/bin/jq -s '.[0] * .[1]' $CONFIG_PATH/config.json /auth/.dockerconfigjson > $CONFIG_PATH/config.tmp;
                mv $CONFIG_PATH/config.tmp $CONFIG_PATH/config.json;
                echo "Sending signal to reload crio config";
                pidof crio;
                kill -1 $(pidof crio)
            image: icr.io/ibm/alpine:latest
            imagePullPolicy: IfNotPresent
            name: updater
            resources: {}
            securityContext:
                privileged: true
            volumeMounts:
                - name: docker-auth-secret
                mountPath: /auth
                - name: docker
                mountPath: /var/lib/kubelet       # ← マウント先を kubelet 配下に
                - name: bin
                mountPath: /host/usr/bin
                - name: lib64
                mountPath: /lib64
        containers:
            - resources:
                requests:
                cpu: 0.01
            image: icr.io/ibm/alpine:latest
            name: sleepforever
            command: ["/bin/sh", "-c"]
            args:
                - >
                while true; do
                    sleep 100000;
                done
        hostPID: true
        volumes:
            - name: docker-auth-secret
            secret:
                secretName: pull-secret
            - name: docker
            hostPath:
                path: /var/lib/kubelet              # ← kubelet 配下をマウント
            - name: bin
            hostPath:
                path: /usr/bin
            - name: lib64
            hostPath:
                path: /lib64
                hostPathType: Directory
    EOF
    
  5. 結果をチェックする

oc get daemonset -n openshift-config update-docker-config
oc get secret pull-secret -n openshift-config --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode
  • worker nodes の結果を確認する。
    • worker node の名前を確認する。
      ibmcloud oc worker ls -c <cluster name>
      
    • ある worker node の結果を確認する。
      oc debug node/<node name>
      
      次に、以下を実行する。
      sh-5.1# chroot /host
      sh-5.1# cat /var/lib/kubelet/config.json
      

4.2. IBM Software Hub のための shared cluster components のインストール

ドキュメントに従います。

4.3. 前提条件ソフトウェアのインストール

  • watsonx.ai
    • Node Feature Discovery Operator
    • NVIDIA GPU Operator
    • Red Hat OpenShift AI Operator

4.3.1 GPUs を必要とする services のための operators のインストール

ドキュメントに従います。
インストール後、ポッドの状況を確認します。

4.3.2 Red Hat OpenShift AI のインストール

  1. IBM Cloud の Web コンソールで、クラスターのページにある「Available to install」セクションの Red Hat OpenShift AI タイルをクリックします。
  2. NFD および GPU Operator オプションがオフになっている状態で、Install をクリックしてください。

5. IBM Software Hub のインスタンスをインストールするための準備

5.1. IBM Software Hub をインストールする前に、クラスターの健康状態を確認する

ドキュメントに従います。

6. IBM Software Hub のインスタンスのインストール

6.1. IBM Software Hub のインスタンスのために必要な components をインストールする

ドキュメントに従います。

  1. cpd-cli で、Red Hat® OpenShift® Container Platform クラスターにログインします:

    ${CPDM_OC_LOGIN}
    
  2. インストールする予定のソフトウェアのためのライセンス条項をレビューします。

    • IBM watsonx.ai
      cpd-cli manage get-license \
      --release=${VERSION} \
      --component=watsonx_ai \
      --license-type=WXAI
      
  3. IBM Software Hub のインスタンスのために必要なコンポーネントをインストールします:

    • Red Hat OpenShift Data Foundation storage
      • Instances without tethered projects
        cpd-cli manage setup-instance \
        --release=${VERSION} \
        --license_acceptance=true \
        --cpd_operator_ns=${PROJECT_CPD_INST_OPERATORS} \
        --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS} \
        --block_storage_class=${STG_CLASS_BLOCK} \
        --file_storage_class=${STG_CLASS_FILE} \
        --run_storage_tests=true
        
        • 注意:
          • ROKS の storage IO では、失敗することが多いです。
          • 作業を前に進めるには、--run_storage_tests=false オプションを選択する必要があるかもしれません。このオプションを選択しても、エラーが出る可能性があります。
  4. operands の状態が Completed であることを確認する:

    cpd-cli manage get-cr-status \
    --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS}
    
  5. operators プロジェクトのリソースの健康状態をチェックする:

    cpd-cli health operators \
    --operator_ns=${PROJECT_CPD_INST_OPERATORS} \
    --control_plane_ns=${PROJECT_CPD_INST_OPERANDS}
    
  6. operands プロジェクトのリソースの健康状態をチェックする:

    cpd-cli health operands \
    --control_plane_ns=${PROJECT_CPD_INST_OPERANDS}
    
  7. Web クライアントのURLとデフォルトの認証情報を取得:

    cpd-cli manage get-cpd-instance-details \
    --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS} \
    --get_admin_initial_credentials=true
    

    以下の情報を後で使用できるように保存しておきます:

    CPD Url: <MASKED>
    CPD Username: cpadmin
    CPD Password: <MASKED>
    

7. クラスターの準備

7.1 必要な node 設定の変更

7.1.1. ロード・バランサーのタイムアウト設定の変更

  • watsonx.ai のための最小限推奨タイムアウト
    • クライアント側タイムアウト: 600s (10m)
    • サーバー側タイムアウト: 600s (10m)
  1. 以下のコマンドを使ってHAProxy ルートのためのサーバー側タイムアウトを 600秒に設定します:
    oc annotate route cpd --overwrite haproxy.router.openshift.io/timeout=600s
    
  2. 環境に IBM Cloud Network Load Balancer for VPC が含まれている場合、IBM Cloud Network Load Balancer for VPC の設定が HA Proxy の設定を上書きします。IBM Cloud Network Load Balancer for VPC のタイムアウトを増やすには、次のコマンドを使用してください。:
    oc patch svc router-default \
    --namespace=openshift-ingress \
    --type=merge \
    --patch '{"metadata": {"annotations": {"service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout": "600"}}}'
    

8 IBM Software Hub のセットアップ

8.1. エンタイトルメントの適用

8.1.1 node pinning の無いエンタイトルメントの適用

ドキュメントに従います。
- IBM watsonx.ai
- Non-production license

9. solutions と services のインストール

9.1. Services のためのインストール・オプションの指定

ドキュメントに従います。

watsonx.ai (lightweight engine) のための install-options.yml サンプル:

########################################################################
# watsonx.ai parameters
########################################################################
custom_spec:  
 watsonx_ai:
  tuning_disabled: true
  lite_install: true
  • 注意:必要に応じて、以下のコマンドも実行する。
    chmod go+r /root/cpd-cli-linux-EE-14.2.0-2124/cpd-cli-workspace/olm-utils-workspace/work/install-options.yml
    

9.2. solutions and services のバッチ・インストールの実行

ドキュメントに従います。

  • Red Hat OpenShift Data Foundation storage

10. platform と services のアンインストール

必要に応じて行います。

11. 全ての services

11.1. IBM watsonx.ai

ドキュメントに目を通しておきます。

11.1.1. IBM watsonx.ai のインストールの準備

ドキュメントに目を通しておきます。

11.1.2. IBM watsonx.ai のインストール

ドキュメントに従います。

  1. インストール・オプションの特定
  2. service のインストール
  3. インストールの検証

11.1.3 インストール後の設定

11.1.3.1. IBM watsonx.ai に基盤モデルを追加する

ドキュメントに従いますが、oc patch コマンドをインストールする際により詳細な指定を追加する必要があるかもしれません。

  1. 使用したいモデルを決定し、その model IDs をメモしてください。
  1. 以下のオプションから、基盤モデルをインストールする方法を選択します。

    • 本稿のケースでは、以下が適用可能です:
      • Install with default configuration
      • Shard the foundation models during installation
    • 後者については、2種類のコマンドが可能です:
      • Shard the foundation models
      • Shard the foundation models on specific nodes
        • 本稿のケースでは、こちらのコマンドを選んでいます。
          • a. nodes のリストを取得します:
            oc get nodes
            
          • b. 使いたい node のラベルをチェックします:
            oc describe no <node-name> | grep kubernetes.io/hostname
            
          • c. 以下のコマンドを使うことにより、その node がGPUを持っていることを確かめます。基盤モデルは、GPU nodes のみに sharding 可能です。
            oc describe node <node-hostname> | grep nvidia.com/gpu.product
            
          • d. custom resource をパッチするには、以下のコマンドを実行してください:
            oc patch -n ${PROJECT_CPD_INST_OPERANDS} watsonxaiifm watsonxaiifm-cr \
            --type merge \
            --patch '{
            "spec": {
            "install_model_list":["llama-3-2-11b-vision-instruct"],
            "llama_3_2_11b_vision_instruct_replicas": "1",
            "llama_3_2_11b_vision_instruct_resources": {
            "limits": {
                "cpu": "2",
                "ephemeral-storage": "1Gi",
                "memory": "96Gi",
                "nvidia.com/gpu": "2"
            },
            "requests": {
                "cpu": "1",
                "ephemeral-storage": "10Mi",
                "memory": "4Gi",
                "nvidia.com/gpu": "2"
            }
            },
            "model_install_parameters": {
            "llama_3_2_11b_vision_instruct": {
                "env": [
                {
                "name": "MODEL_NAME",
                "value": "/mnt/models/llama-3-2-11b-vision-instruct"
                },
                {
                "name": "SERVED_MODEL_NAME",
                "value": "meta-llama/llama-3-2-11b-vision-instruct"
                },
                {
                "name": "MAX_SEQUENCE_LENGTH",
                "value": "16384"
                },
                {
                "name": "MAX_NUM_SEQS",
                "value": "16"
                },
                {
                "name": "MAX_NEW_TOKENS",
                "value": "8192"
                },
                {
                "name": "DISABLE_PROMPT_LOGPROBS",
                "value": "true"
                },
                {
                "name": "DEFAULT_INCLUDE_STOP_SEQS",
                "value": "false"
                },
                {
                "name": "ENABLE_AUTO_TOOL_CHOICE",
                "value": "true"
                },
                {
                "name": "ENFORCE_EAGER",
                "value": "true"
                },
                {
                "name": "TOOL_CALL_PARSER",
                "value": "llama3_json"
                },
                {
                "name": "CHAT_TEMPLATE",
                "value": "/mnt/models/llama-3-2-11b-vision-instruct/tool_chat_template_llama3.2_json.jinja"
                },
                {
                "name": "NUM_GPUS",
                "value": "2"
                },
                {
                "name": "CUDA_VISIBLE_DEVICES",
                "value": "0,1"
                },
                {
                "name": "HUGGINGFACE_HUB_CACHE",
                "value": "/mnt/models/"
                },
                {
                "name": "HF_MODULES_CACHE",
                "value": "/tmp/huggingface/modules"
                },
                {
                "name": "PORT",
                "value": "3000"
                },
                {
                "name": "MAX_LOG_LEN",
                "value": "100"
                },
                {
                "name": "GPRC_PORT",
                "value": "8033"
                }
                ],
                "shard": "2",
                "nodeSelector":{"kubernetes.io/hostname": "kube-d30mc47t00u32raguqm0-nithandsono-workerp-000001cb"}
            }
            }
            }
            }'
            
  2. 以下のコマンドを実行して、watsonxaiifm custom resource の spec セクションが更新されていることを確認する:

    oc describe watsonxaiifm watsonxaiifm-cr -n ${PROJECT_CPD_INST_OPERANDS}
    
  3. operator が変更の調整を完了し、Completed ステータスを表示するまで待ってください。service の状態を確認するには、次のコマンドを使用できます:

    oc get watsonxaiifm -n ${PROJECT_CPD_INST_OPERANDS}
    
  4. 以下のコマンドを使用して、変更が正常に適用されたかどうかを確認してください。

    • model predictor ポッドが稼働中かどうかを確認するには:
      oc get po -n ${PROJECT_CPD_INST_OPERANDS} | grep predictor
      
    • predictor ポッドが正しいGPUプロセッサ数を示しているかどうかを確認します。node selector を指定した場合は、Node-Selectors フィールドの値も確認できます。
      oc describe po <model-predictor-pod> -n ${PROJECT_CPD_INST_OPERANDS}
      
    • 基盤モデルがどの node を使用しているかをチェックするには:
      oc get po -n ${PROJECT_CPD_INST_OPERANDS} -o wide | grep predictor
      

注意:状況に応じて、以下のコマンドを実行する必要があるかもしれません。

11.1.3.2. GPUs に埋め込みモデルを追加的にインストールする

二つのやり方があります:

以下のコマンドは、本稿のケースでも適用された前者に当たります:

oc patch watsonxaiifm watsonxaiifm-cr \
--namespace=${PROJECT_CPD_INST_OPERANDS} \
--type=merge \
--patch='{
    "spec":{
        "install_model_list": ["llama_3_2_11b_vision_instruct","multilingual-e5-large"],
        "multilingual_e5_large_replicas": 1,
        "multilingual_e5_large_resources": {
            "limits": {
                "cpu": "4",
                "memory": "8Gi",
                "nvidia.com/gpu": 1
            },
            "requests": {
                "cpu": "1",
                "memory": "4Gi",
                "nvidia.com/gpu": 1
            }
        }
    }
}'

12. IBM watsonx.ai の始め方

12.1. watsonx.ai lightweight engine の始め方

12.1.1. API 資格情報の生成

ドキュメントに従いますが、例で与えられているコマンドには、トリビアルですがエディトリアルなエラーがありそのままではコマンドが通らず誤りを発見しにくいものが散見されたため、以下の例を参考にする。

  1. 以下のいずれかの方法で API キーを生成できます:

    • Web クライアントのUIから生成する。より詳しい情報については、以下参照:認証のためのAPIキーの生成.
    • プログラム的に、以下のステップを遂行して生成する。

    本稿では後者を選びます。

    • a. 先ほど取得した service の詳細を使用して bearer token を作成してください。詳細は、以下参照:認証 token の取得
      curl --request POST \
      --url "https://${CPD_URL}/icp4d-api/v1/authorize" \
      --header "Content-Type: application/json" \
      --data "{
      \"username\":\"${CPDUSER}\",
      \"password\": \"${CPDUSER_PASSWORD}\"
      }"
      
      返された JSON から bearer token をコピーします。
    • b. 以下のリクエストで bearer token として使用するため、コピーした token で TOKEN を置き換えてください。詳細は以下参照:API キーの取得
      TOKEN=<ABOVE OBTAINED BEARER TOKEN>
      
      curl -s -X GET --url "https://${CPD_URL}/usermgmt/v1/user/apiKey" --header "Authorization: Bearer ${TOKEN}"
      
      生成された API キーをコピーします。
  2. watsonx.ai REST API では、API キーを使用して必要に応じて新しい bearer tokens をリクエストします。プログラム的にAPI キーを生成した場合、以前使用したのと同じ ${CPD_URL}/icp4d-api/v1/authorize エンドポイントを使用することに気付くかもしれませんが、今回はパスワードの代わりに API キーを提出して bearer token を生成します。詳細は以下参照:認証 token の取得

    APIKEY=<ABOVE OBTAINED API KEY>
    
    curl --request POST \
    --url "https://${CPD_URL}/icp4d-api/v1/authorize" \
    --header "Content-Type: application/json" \
    --data "{
    \"username\":\"${CPDUSER}\",
    \"api_key\": \"${APIKEY}\"
    }"
    

    JSON 応答の access_token セクションから bearer token をコピーします。

  3. request を送信する際には、前のステップで取得した bearer token を含めてください。

    • llama-3-2-11b-vision-instruct
      TOKEN_2=<ABOVE OBTAINED BEARER TOKEN>
      
      curl -k -X POST \
      --url "https://${CPD_URL}/ml/v1/text/chat?version=2024-07-23" \
      --header "Authorization: Bearer ${TOKEN_2}" \
      --header "Content-Type: application/json" \
      --data '{
      "model_id": "meta-llama/llama-3-2-11b-vision-instruct",
      "messages": [
          {
          "role": "system",
          "content": "You are a helpful assistant."
          },
          {
          "role": "user",
          "content": [
              {
              "type": "text",
              "text": "Who won the world series in 2020?"
              }
          ]
          },
          {
          "role": "assistant",
          "content": "The Los Angeles Dodgers won the World Series in 2020."
          },
          {
          "role": "user",
          "content": [
              {
              "type": "text",
              "text": "Where was it played?"
              }
          ]
          }
      ],
      "max_tokens": 100,
      "temperature": 0,
      "time_limit": 1000
      }'
      
      
      
      -d '{
      "model_id": "",
      "messages": [
          {
          "role": "system",
          "content": "You are a helpful assistant."
          },
          {
          "role": "user",
          "content": [
              {
              "type": "text",
              "text": "Who won the world series in 2020?"
              }
          ]
          },
          {
          "role": "assistant",
          "content": "The Los Angeles Dodgers won the World Series in 2020."
          },
          {
          "role": "user",
          "content": [
              {
              "type": "text",
              "text": "Where was it played?"
              }
          ]
          }
      ],
      "max_tokens": 100,
      "temperature": 0,
      "time_limit": 1000
      }'
      
    • multilingual-e5-large
      curl --request POST "https://${CPD_URL}/ml/v1/text/embeddings?version=2023-10-25" \
      -H "Authorization: Bearer $TOKEN_2" \
      -H 'Content-type: application/json' \
      -d '{
      "inputs": [
          "Youth craves thrills while adulthood cherishes wisdom.",
          "Youth seeks ambition while adulthood finds contentment.",
          "Dreams chased in youth while goals pursued in adulthood."
      ],
      "model_id": "intfloat/multilingual-e5-large"
      }'
      

References

ドキュメント

The ibm-watsonx-ai library

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?