TorchServe を使用して GKE でスケーラブルな LLM を提供する


このチュートリアルでは、TorchServe フレームワークを使用して、GKE クラスタで事前トレーニング済みの PyTorch ML モデルを提供する方法について説明します。このチュートリアルで使用する ML モデルは、ユーザー リクエストに基づいて予測を生成します。このチュートリアルの情報は、GKE で独自のモデルを大規模にデプロイして提供するのに役立ちます。

チュートリアルのアプリケーションについて

このアプリケーションは、Fast Dash フレームワークを使用して作成された小さな Python ウェブ アプリケーションです。このアプリケーションを使用して、予測リクエストを T5 モデルに送信します。このアプリケーションは、ユーザーのテキスト入力と言語ペアをキャプチャし、その情報をモデルに送信します。このモデルはテキストを翻訳してアプリケーションに結果を返し、その結果をユーザーに表示します。Fast Dash の詳細については、Fast Dash のドキュメントをご覧ください。

仕組み

このチュートリアルでは、GKE Autopilot クラスタにワークロードをデプロイします。GKE は Autopilot ノードを完全に管理するため、ノード構成、スケーリング、アップグレードの管理オーバーヘッドが削減されます。ML ワークロードとアプリケーションを Autopilot にデプロイすると、GKE はワークロードを実行するために基盤となる適切なマシンタイプとサイズを選択します。詳細については、Autopilot の概要をご覧ください。

モデルをデプロイすると、アプリケーションで予測リクエストをモデルに送信するために使用できる予測 URL を取得できます。この方法では、モデルがアプリから切り離されるため、ウェブ アプリケーションから独立してモデルをスケーリングできます。

目標

  • 事前トレーニング済みの T5 モデルを Hugging Face リポジトリから取得して、コンテナ イメージとしてパッケージ化し Artifact Registry に push することによりサービング用に準備する
  • Autopilot クラスタにモデルをデプロイする
  • モデルと通信する Fast Dash アプリケーションをデプロイする
  • Prometheus 指標に基づいてモデルを自動スケーリングする

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

始める前に

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  4. Google Cloud プロジェクトで課金が有効になっていることを確認します

  5. Kubernetes Engine, Cloud Storage, Artifact Registry, and Cloud Build API を有効にします。

    gcloud services enable container.googleapis.comstorage.googleapis.comartifactregistry.googleapis.comcloudbuild.googleapis.com

環境を準備する

サンプル リポジトリのクローンを作成し、チュートリアル ディレクトリを開きます。

git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
cd kubernetes-engine-samples/ai-ml/t5-model-serving

クラスタを作成する

次のコマンドを実行します。

gcloud container clusters create-auto ml-cluster \
    --release-channel=RELEASE_CHANNEL \
    --cluster-version=CLUSTER_VERSION \
    --location=us-central1

次のように置き換えます。

  • RELEASE_CHANNEL: クラスタのリリース チャンネル。rapidregularstable のいずれかにする必要があります。L4 GPU を使用するため、GKE バージョン 1.28.3-gke.1203000 以降のチャンネルを選択します。特定のチャンネルで利用可能なバージョンを確認するには、リリース チャンネルのデフォルト バージョンと利用可能なバージョンを表示するをご覧ください。
  • CLUSTER_VERSION: 使用する GKE のバージョン。1.28.3-gke.1203000 以降にする必要があります。

オペレーションが完了するまでに数分かかります。

Artifact Registry リポジトリを作成する

  1. クラスタと同じリージョンに、Docker 形式で新しい Artifact Registry 標準リポジトリを作成します。

    gcloud artifacts repositories create models \
        --repository-format=docker \
        --location=us-central1 \
        --description="Repo for T5 serving image"
    
  2. リポジトリ名を確認します。

    gcloud artifacts repositories describe models \
        --location=us-central1
    

    出力は次のようになります。

    Encryption: Google-managed key
    Repository Size: 0.000MB
    createTime: '2023-06-14T15:48:35.267196Z'
    description: Repo for T5 serving image
    format: DOCKER
    mode: STANDARD_REPOSITORY
    name: projects/PROJECT_ID/locations/us-central1/repositories/models
    updateTime: '2023-06-14T15:48:35.267196Z'
    

モデルをパッケージ化する

このセクションでは、Cloud Build を使用してモデルとサービング フレームワークを単一のコンテナ イメージにパッケージ化し、生成されたイメージを Artifact Registry リポジトリに push します。

  1. コンテナ イメージの Dockerfile を確認します。

    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    ARG BASE_IMAGE=pytorch/torchserve:0.7.1-cpu
    
    FROM alpine/git
    
    ARG MODEL_NAME=t5-small
    ARG MODEL_REPO=https://huggingface.co/${MODEL_NAME}
    ENV MODEL_NAME=${MODEL_NAME}
    ENV MODEL_VERSION=${MODEL_VERSION}
    
    RUN git clone "${MODEL_REPO}" /model
    
    FROM ${BASE_IMAGE}
    
    ARG MODEL_NAME=t5-small
    ARG MODEL_VERSION=1.0
    ENV MODEL_NAME=${MODEL_NAME}
    ENV MODEL_VERSION=${MODEL_VERSION}
    
    COPY --from=0 /model/. /home/model-server/
    COPY handler.py \
         model.py \
         requirements.txt \
         setup_config.json /home/model-server/
    
    RUN  torch-model-archiver \
         --model-name="${MODEL_NAME}" \
         --version="${MODEL_VERSION}" \
         --model-file="model.py" \
         --serialized-file="pytorch_model.bin" \
         --handler="handler.py" \
         --extra-files="config.json,spiece.model,tokenizer.json,setup_config.json" \
         --runtime="python" \
         --export-path="model-store" \
         --requirements-file="requirements.txt"
    
    FROM ${BASE_IMAGE}
    
    ENV PATH /home/model-server/.local/bin:$PATH
    ENV TS_CONFIG_FILE /home/model-server/config.properties
    # CPU inference will throw a warning cuda warning (not error)
    # Could not load dynamic library 'libnvinfer_plugin.so.7'
    # This is expected behaviour. see: https://stackoverflow.com/a/61137388
    ENV TF_CPP_MIN_LOG_LEVEL 2
    
    COPY --from=1 /home/model-server/model-store/ /home/model-server/model-store
    COPY config.properties /home/model-server/
    

    この Dockerfile では、次の複数のステージのビルドプロセスを定義します。

    1. Hugging Face リポジトリからモデル アーティファクトをダウンロードします。
    2. PyTorch Serving Archive ツールを使用してモデルをパッケージ化します。これにより、推論サーバーがモデルを読み込むために使用するモデル アーカイブ(.mar)ファイルが作成されます。
    3. PyTorch Serve を使用して最終的なイメージをビルドします。
  2. Cloud Build を使用してイメージをビルドして push します。

    gcloud builds submit model/ \
        --region=us-central1 \
        --config=model/cloudbuild.yaml \
        --substitutions=_LOCATION=us-central1,_MACHINE=gpu,_MODEL_NAME=t5-small,_MODEL_VERSION=1.0
    

    ビルドプロセスの完了には数分かかります。モデルサイズが t5-small よりも大きい場合、ビルドプロセスに著しく時間がかかる可能性があります。

  3. イメージがリポジトリにあることを確認します。

    gcloud artifacts docker images list us-central1-docker.pkg.dev/PROJECT_ID/models
    

    PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

    出力は次のようになります。

    IMAGE                                                     DIGEST         CREATE_TIME          UPDATE_TIME
    us-central1-docker.pkg.dev/PROJECT_ID/models/t5-small     sha256:0cd...  2023-06-14T12:06:38  2023-06-14T12:06:38
    

パッケージ化されたモデルを GKE にデプロイする

イメージをデプロイするには、環境に合わせてサンプル リポジトリの Kubernetes マニフェストを変更します。

  1. 推論ワークロードのマニフェストを確認します。

    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: t5-inference
      labels:
        model: t5
        version: v1.0
        machine: gpu
    spec:
      replicas: 1
      selector:
        matchLabels:
          model: t5
          version: v1.0
          machine: gpu
      template:
        metadata:
          labels:
            model: t5
            version: v1.0
            machine: gpu
        spec:
          nodeSelector:
            cloud.google.com/gke-accelerator: nvidia-l4
          securityContext:
            fsGroup: 1000
            runAsUser: 1000
            runAsGroup: 1000
          containers:
            - name: inference
              image: us-central1-docker.pkg.dev/PROJECT_ID/models/t5-small:1.0-gpu
              imagePullPolicy: IfNotPresent
              args: ["torchserve", "--start", "--foreground"]
              resources:
                limits:
                  nvidia.com/gpu: "1"
                  cpu: "3000m"
                  memory: 16Gi
                  ephemeral-storage: 10Gi
                requests:
                  nvidia.com/gpu: "1"
                  cpu: "3000m"
                  memory: 16Gi
                  ephemeral-storage: 10Gi
              ports:
                - containerPort: 8080
                  name: http
                - containerPort: 8081
                  name: management
                - containerPort: 8082
                  name: metrics
              readinessProbe:
                httpGet:
                  path: /ping
                  port: http
                initialDelaySeconds: 120
                failureThreshold: 10
              livenessProbe:
                httpGet:
                  path: /models/t5-small
                  port: management
                initialDelaySeconds: 150
                periodSeconds: 5
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: t5-inference
      labels:
        model: t5
        version: v1.0
        machine: gpu
    spec:
      type: ClusterIP
      selector:
        model: t5
        version: v1.0
        machine: gpu
      ports:
        - port: 8080
          name: http
          targetPort: http
        - port: 8081
          name: management
          targetPort: management
        - port: 8082
          name: metrics
          targetPort: metrics
    

  2. PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

    sed -i "s/PROJECT_ID/PROJECT_ID/g" "kubernetes/serving-gpu.yaml"
    

    これにより、Deployment 仕様のコンテナ イメージのパスが、Artifact Registry の T5 モデルイメージのパスと一致するようになります。

  3. Kubernetes リソースを作成します。

    kubectl create -f kubernetes/serving-gpu.yaml
    

モデルが正常にデプロイされたことを確認するには、次の操作を行います。

  1. Deployment と Service のステータスを取得します。

    kubectl get -f kubernetes/serving-gpu.yaml
    

    次のような準備完了の Pod が出力に表示されるまで待ちます。イメージのサイズによっては、最初のイメージの pull に数分かかることがあります。

    NAME                            READY   UP-TO-DATE    AVAILABLE   AGE
    deployment.apps/t5-inference    1/1     1             0           66s
    
    NAME                    TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                       AGE
    service/t5-inference    ClusterIP   10.48.131.86    <none>        8080/TCP,8081/TCP,8082/TCP    66s
    
  2. t5-inference Service のローカルポートを開きます。

    kubectl port-forward svc/t5-inference 8080
    
  3. 新しいターミナル ウィンドウを開き、テスト リクエストを Service に送信します。

    curl -v -X POST -H 'Content-Type: application/json' -d '{"text": "this is a test sentence", "from": "en", "to": "fr"}' "http://localhost:8080/predictions/t5-small/1.0"
    

    テスト リクエストが失敗し、Pod 接続が閉じた場合は、ログを確認します。

    kubectl logs deployments/t5-inference
    

    出力が次のような場合、TorchServe は一部のモデル依存関係のインストールに失敗しています。

    org.pytorch.serve.archive.model.ModelException: Custom pip package installation failed for t5-small
    

    この問題を解決するには、Deployment を再起動します。

    kubectl rollout restart deployment t5-inference
    

    Deployment コントローラが新しい Pod を作成します。上記の手順を繰り返して、新しい Pod でポートを開きます。

ウェブ アプリケーションを使用して、デプロイされたモデルにアクセスする

  1. Fast Dash ウェブ アプリケーションを、Artifact Registry のコンテナ イメージとしてビルドして push します。

    gcloud builds submit client-app/ \
        --region=us-central1 \
        --config=client-app/cloudbuild.yaml
    
  2. テキスト エディタで kubernetes/application.yaml を開き、image: フィールドの PROJECT_ID をプロジェクト ID に置き換えます。あるいは、次のコマンドを実行します。

    sed -i "s/PROJECT_ID/PROJECT_ID/g" "kubernetes/application.yaml"
    
  3. Kubernetes リソースを作成します。

    kubectl create -f kubernetes/application.yaml
    

    Deployment と Service が完全にプロビジョニングされるまでに時間がかかることがあります。

  4. ステータスを確認するには、次のコマンドを実行します。

    kubectl get -f kubernetes/application.yaml
    

    次のような準備完了の Pod が出力に表示されるまで待ちます。

    NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/fastdash   1/1     1            0           1m
    
    NAME               TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    service/fastdash   NodePort   203.0.113.12    <none>        8050/TCP         1m
    
  5. ウェブ アプリケーションは実行されていますが、外部 IP アドレスで公開されていません。ウェブ アプリケーションにアクセスするには、ローカルポートを開きます。

    kubectl port-forward service/fastdash 8050
    
  6. ブラウザでウェブ インターフェースを開きます。

    • ローカルシェルを使用している場合は、ブラウザを開いて http://127.0.0.1:8050 に移動します。
    • Cloud Shell を使用している場合は、[ウェブでプレビュー]、[ポートを変更] の順にクリックします。ポート 8050 を指定します。
  7. T5 モデルにリクエストを送信するには、ウェブ インターフェースの [TEXT]、[FROM LANG]、[TO LANG] の各フィールドに値を指定して、[送信] をクリックします。使用可能な言語の一覧については、T5 のドキュメントをご覧ください。

モデルの自動スケーリングを有効にする

このセクションでは、Google Cloud Managed Service for Prometheus の指標に基づいてモデルの自動スケーリングを有効にする方法について説明します。手順は次のとおりです。

  1. カスタム指標の Stackdriver アダプタをインストールする
  2. PodMonitoring と HorizontalPodAutoscaling 構成を適用する

Google Cloud Managed Service for Prometheus は、バージョン 1.25 以降を実行している Autopilot クラスタではデフォルトで有効になっています。

カスタム指標の Stackdriver アダプタをインストールする

このアダプタを使用すると、クラスタで Prometheus の指標を使用して Kubernetes の自動スケーリングに関する決定を行うことができます。

  1. アダプタをデプロイします。

    kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
    
  2. アダプタが使用する IAM サービス アカウントを作成します。

    gcloud iam service-accounts create monitoring-viewer
    
  3. IAM サービス アカウントに、プロジェクトに対する monitoring.viewer ロールと iam.workloadIdentityUser ロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com" \
        --role roles/monitoring.viewer
    gcloud iam service-accounts add-iam-policy-binding monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[custom-metrics/custom-metrics-stackdriver-adapter]"
    

    PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

  4. アダプタの Kubernetes ServiceAccount にアノテーションを付けて、IAM サービス アカウントの権限を借用できるようにします。

    kubectl annotate serviceaccount custom-metrics-stackdriver-adapter \
        --namespace custom-metrics \
        iam.gke.io/gcp-service-account=monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com
    
  5. アダプタを再起動して変更を反映します。

    kubectl rollout restart deployment custom-metrics-stackdriver-adapter \
        --namespace=custom-metrics
    

PodMonitoring と HorizontalPodAutoscaling 構成を適用する

PodMonitoring は、特定の Namespace で指標の取り込みとターゲットのスクレイピングを可能にする Google Cloud Managed Service for Prometheus カスタム リソースです。

  1. TorchServe Deployment と同じ Namespace に PodMonitoring リソースをデプロイします。

    kubectl apply -f kubernetes/pod-monitoring.yaml
    
  2. HorizontalPodAutoscaler マニフェストを確認します。

    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: t5-inference
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: t5-inference
      minReplicas: 1
      maxReplicas: 5
      metrics:
      - type: Pods
        pods:
          metric:
            name: prometheus.googleapis.com|ts_queue_latency_microseconds|counter
          target:
            type: AverageValue
            averageValue: "30000"
    

    HorizontalPodAutoscaler は、リクエスト キューの累積期間に基づいて T5 モデルの Pod 数をスケーリングします。自動スケーリングは、キューの累積継続時間をマイクロ秒単位で示す ts_queue_latency_microseconds 指標に基づいています。

  3. HorizontalPodAutoscaler を作成します。

    kubectl apply -f kubernetes/hpa.yaml
    

負荷生成ツールを使用して自動スケーリングを確認する

自動スケーリングの構成をテストするには、サービスを提供するアプリケーションの負荷を生成します。このチュートリアルでは、Locust 負荷生成ツールを使用して、モデルの予測エンドポイントにリクエストを送信します。

  1. 負荷生成ツールを作成します。

    kubectl apply -f kubernetes/loadgenerator.yaml
    

    負荷生成ツール Pod の準備が整うまで待ちます。

  2. 負荷生成ツールのウェブ インターフェースをローカルで公開します。

    kubectl port-forward svc/loadgenerator 8080
    

    エラー メッセージが表示された場合は、Pod の実行中にもう一度お試しください。

  3. ブラウザで、負荷生成ツールのウェブ インターフェースを開きます。

    • ローカルシェルを使用している場合は、ブラウザを開いて http://127.0.0.1:8080 に移動します。
    • Cloud Shell を使用している場合は、[ウェブでプレビュー]、[ポートを変更] の順にクリックします。ポート 8080 を入力します。
  4. [グラフ] タブをクリックして、パフォーマンスの推移を確認します。

  5. 新しいターミナル ウィンドウを開き、HorizontalPodAutoscaler のレプリカ数を確認します。

    kubectl get hpa -w
    

    レプリカの数は、負荷が増加すると増加します。スケールアップに 10 分ほどかかる場合があります。新しいレプリカが開始されると、Locust チャートで成功したリクエストの数が増加します。

    NAME           REFERENCE                 TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
    t5-inference   Deployment/t5-inference   71352001470m/7M   1         5        1           2m11s
    

推奨事項

  • サービングに使用するのと同じバージョンのベース Docker イメージでモデルをビルドします。
  • モデルに特別なパッケージ依存関係がある場合、または依存関係のサイズが大きい場合は、ベース Docker イメージのカスタム バージョンを作成します。
  • モデルの依存関係パッケージのツリー バージョンを監視します。パッケージの依存関係が互いのバージョンをサポートしていることを確認します。たとえば、Panda バージョン 2.0.3 は NumPy バージョン 1.20.3 以降をサポートしています。
  • GPU ノードでは GPU 負荷の高いモデルを実行し、CPU ノードでは CPU 負荷の高いモデルを実行します。これにより、モデル サービングの安定性が向上し、ノードリソースを効率的に消費できます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトを削除する

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

リソースを個別に削除する

  1. Kubernetes リソースを削除します。

    kubectl delete -f kubernetes/loadgenerator.yaml
    kubectl delete -f kubernetes/hpa.yaml
    kubectl delete -f kubernetes/pod-monitoring.yaml
    kubectl delete -f kubernetes/application.yaml
    kubectl delete -f kubernetes/serving-gpu.yaml
    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
    
  2. GKE クラスタを削除します。

    gcloud container clusters delete "ml-cluster" \
        --location="us-central1" --quiet
    
  3. IAM サービス アカウントと IAM ポリシー バインディングを削除します。

    gcloud projects remove-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com" \
        --role roles/monitoring.viewer
    gcloud iam service-accounts remove-iam-policy-binding monitoring-viewer@PROJECT_ID.iam.gserviceaccount.com \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[custom-metrics/custom-metrics-stackdriver-adapter]"
    gcloud iam service-accounts delete monitoring-viewer
    
  4. Artifact Registry 内のイメージを削除します。必要に応じて、リポジトリ全体を削除します。手順については、Artifact Registry のドキュメントでイメージの削除をご覧ください。

コンポーネントの概要

このセクションでは、モデル、ウェブ アプリケーション、フレームワーク、クラスタなど、このチュートリアルで使用されるコンポーネントについて説明します。

T5 モデルについて

このチュートリアルでは、事前トレーニング済みの多言語 T5 モデルを使用します。T5 は、テキストをある言語から別の言語に翻訳するテキスト間の変換ツールです。T5 では、入力と出力は常にテキスト文字列ですが、BERT スタイルのモデルは入力のクラスラベルまたはスパンのいずれかしか出力できません。T5 モデルは、要約、Q&A、テキスト分類などのタスクにも使用できます。このモデルは、Colossal Clean Crawled Corpus(C4)Wiki-DPR の大量のテキストでトレーニングされています。

詳細については、T5 モデルのドキュメントをご覧ください。

T5 モデルは、Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu が『Journal of Machine Learning Research』で発表した論文「Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer」で公開されています。

T5 モデルは、さまざまなモデルサイズをサポートしており、特定のユースケースによって複雑さが異なります。このチュートリアルではデフォルト サイズ t5-small を使用していますが、別のサイズを選択することもできます。次の T5 サイズは、Apache 2.0 ライセンスで配布されています。

  • t5-small: 6,000 万個のパラメータ
  • t5-base: 2 億 2,000 万個のパラメータ
  • t5-large: 7 億 7,000 万個のパラメータ。3 GB のダウンロード。
  • t5-3b: 30 億のパラメータ。11 GB のダウンロード。
  • t5-11b: 110 億のパラメータ。45 GB のダウンロード。

利用可能な他の T5 モデルについては、Hugging Face リポジトリをご覧ください。

TorchServe について

TorchServe は、PyTorch モデルを提供するための柔軟なツールです。PyTorch、TensorFlow、ONNX など、主要なディープ ラーニング フレームワークのすべてで、設定を行わずにすぐに使用できます。TorchServe は、本番環境へのモデルのデプロイや、迅速なプロトタイピングとテストに使用できます。

次のステップ