Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

Google Cloud Machine Learning : 入門編 (3) – 予測

Posted on 10/24/2016 by Sales Information

Google Cloud Machine Learning : 入門編 (3) – 予測

Google Cloud ML 入門編 (1) では Google Cloud ML パブリック Beta のクライアント環境のセットアップと MNIST のシングル・ワーカー・ジョブの投入までを試しました。
入門編 (2) では Cloud ML の TensorFlow 分散訓練の方法から始めてハイパーパラメータ調整を行ないました。

本記事 – 入門編 (3) では以下のドキュメントに従って :

Prediction Quickstart | Google Cloud Machine Learning

予測 (prediction) を主題として Cloud ML 上で TensorFlow モデルをサービス提供する方法を扱います。Training クイックスタートでトレーニングしたものと同様なモデルに対してオンラインとバッチ予測リクエストの両方を送ることができます。

* あくまでベータですので仕様が変更される可能性はありますのでご注意ください。

Prediction クイックスタート

クラウド上で予測のためにモデルをアップデートする

クラウド上で予測を有効にするためには、Training クイックスタートで使用した TensorFlow MNIST サンプル・コードに小さな変更を行なう必要があります。

これらの変更については Exporting and Deploying Your Model for Prediction how-to に記述されていますが、このクイックスタートのためには既に変更を加えています; 単に作業ディレクトリを ~/google-cloud-ml/samples/mnist/deployable/ に移してください :

cd ~/google-cloud-ml/samples/mnist/deployable/

クラウドでアップデートしたモデルをトレーニングする

最初に、モデルがローカルでトレーニングできることを一応確認しておきます :

# Clear the output from any previous local run.
rm -f data/{checkpoint,events,export}*
# Train locally.
python -m trainer.task

トレーニングの最後に、export された最終的なモデルは data/export と data/export.meta ファイル群に置かれます :

$ ls -1 data/
checkpoint
checkpoint-1999
checkpoint-1999.meta
checkpoint-999
checkpoint-999.meta
eval_sample.tensor.json
events.out.tfevents.1477226741.cs-6860-devshell-vm-e1e01071-54f6-495c-bcec-d79c9d38047f-114
export
export.meta
predict_sample.tensor.json

次に、トレーニング・ジョブのための名前を選択します、e.g. “mnist_deployable_yourusername”.
英字で始まり、英数字とアンダースコアを含みます。

JOB_NAME=<your job name>

そしてトレーニング・スクリプトをクラウドに submit します :

$ PROJECT_ID=`gcloud config list project --format "value(core.project)"`
$ echo $PROJECT_ID
classcat-tensorflow

$ TRAIN_BUCKET=gs://${PROJECT_ID}-ml
$ echo $TRAIN_BUCKET
gs://classcat-tensorflow-ml

$ TRAIN_PATH=${TRAIN_BUCKET}/${JOB_NAME}
$ echo $TRAIN_PATH
gs://classcat-tensorflow-ml/mnist_deployable_classcat

# Clear the output from any previous cloud run.
$ gsutil rm -rf ${TRAIN_PATH}

$gcloud beta ml jobs submit training ${JOB_NAME} \
  --package-path=trainer \
  --module-name=trainer.task \
  --staging-bucket="${TRAIN_BUCKET}" \
  --region=us-central1 \
  -- \
  --train_dir="${TRAIN_PATH}/train" \
  --model_dir="${TRAIN_PATH}/model"

実行直後です :

createTime: '2016-10-23T12:57:33Z'
jobId: mnist_deployable_classcat
state: QUEUED
trainingInput:
  args:
  - --train_dir=gs://classcat-tensorflow-ml/mnist_deployable_classcat/train
  - --model_dir=gs://classcat-tensorflow-ml/mnist_deployable_classcat/model
  packageUris:
  - gs://classcat-tensorflow-ml/cloudmldist/1477227451/trainer-0.0.0.tar.gz
  pythonModule: trainer.task
  region: us-central1
masao_cc@classcat-tensorflow:~/google-cloud-ml/samples/mnist/deployable$ gcloud beta ml jobs describe --project ${PROJECT_ID} 
${JOB_NAME}
createTime: '2016-10-23T12:57:33Z'
jobId: mnist_deployable_classcat
state: PREPARING
trainingInput:
  args:
  - --train_dir=gs://classcat-tensorflow-ml/mnist_deployable_classcat/train
  - --model_dir=gs://classcat-tensorflow-ml/mnist_deployable_classcat/model
  packageUris:
  - gs://classcat-tensorflow-ml/cloudmldist/1477227451/trainer-0.0.0.tar.gz
  pythonModule: trainer.task
  region: us-central1

最後に、ジョブの進行をチェックして終了を待ちます :

gcloud beta ml jobs describe --project ${PROJECT_ID} ${JOB_NAME}

クラウドにモデルを配備する

最初に、モデルの名前を選択します、e.g. “mnist_yourusername”。
英字で始まり、英数字とアンダースコアを含みます。

MODEL_NAME=<your model name>

そして予測のための Cloud ML モデルとバージョンを作成します :

gcloud beta ml models create ${MODEL_NAME}
gcloud beta ml models versions create \
  --origin=${TRAIN_PATH}/model/ \
  --model=${MODEL_NAME} \
  v1
gcloud beta ml models versions set-default --model=${MODEL_NAME} v1

alternative として、GCP コンソールでもモデルとバージョンを作成できます :

  1. “モデルを作成” をクリックします(または既に一つ以上のモデルがある場合には “+ モデルを作成”)。
  2. モデル名を入力します、 e.g. mnist_yourusername。
  3. “作成” をクリックします。
  4. 新しいモデルの名前をクリックします。
  5. “バージョンを作成する” または “+ バージョンを作成する” をクリックします。
  6. 次の情報を入力します :
    • 名前 : v1
    • ソース : ${TRAIN_PATH}/model/ の値 (ブラウズで選択できます)。
  7. “作成” をクリックします。
  8. モデルバージョン “v1” の隣の「デフォルトに設定」をクリックします(但し、1個だけの時は自動的にデフォルトに設定される感じです)。

クラウドで新しいインスタンスを予測する

これでモデルに予測リクエストを送ることができます。各インスタンスは JSON オブジェクトで、その属性は事前に宣言してあるテンソル・エイリアスです (“image”, “key”)。”image” 属性は float のリストとしての手書き数字画像データ(i.e. モデルに予測させたいもの)を含み、一方で “key” (i.e. JSON ファイルの画像のインデックス)は単一の integer です :

head -n2 data/predict_sample.tensor.json

以下と同様の出力が見れるはずです :

{"image": [0.0,..., 0.0, 0.0], "key": 0}
{"image": [0.0,..., 0.0, 0.0], "key": 1}
オンライン予測サービスを使用する

【注意】Cloud ML オンライン予測サービスは現時点で(製品の他の機能は Beta ですが)Alpha フィーチャーです。オンライン予測は特に制限なく利用可能ですが、Cloud ML の他の機能よりもステーブルではなく信頼性が低いかもしれません。

次のスクリプトはファイルからインスタンスを読んでそれらを Cloud ML オンライン予測サービスに送ります :

gcloud beta ml predict --model=${MODEL_NAME} \
  --instances=data/predict_sample.tensor.json

以下は出力結果です :

predictions:
- key: 0
  prediction: 3
  scores:
  - 0.0203564
  - 0.000128082
  - 0.00255795
  - 0.619445
  - 3.96154e-05
  - 0.335909
  - 0.000672323
  - 0.00473043
  - 0.0136186
  - 0.00254196
- key: 1
  prediction: 0
  scores:
  - 0.997337
  - 7.48403e-09
  - 3.81023e-05
  - 8.05008e-05
  - 3.44861e-07
  - 0.00245502
  - 2.90748e-05
  - 1.94155e-05
  - 3.20863e-05
  - 8.17647e-06
- key: 2
  prediction: 4
  scores:
  - 0.00338854
  - 0.00223743
  - 0.0289303
  - 0.0399133
  - 0.672126
  - 0.0051319
  - 0.0154283
  - 0.0249293
  - 0.0218912
  - 0.186024
- key: 3
  prediction: 1
  scores:
  - 3.44334e-06
  - 0.962688
  - 0.00933552
  - 0.00441769
  - 0.000420508
  - 0.000595645
  - 0.000220079
  - 0.000721661
  - 0.0209434
  - 0.000654054
- key: 4
  prediction: 9
  scores:
  - 1.9798e-05
  - 0.000375617
  - 6.38733e-05
  - 0.000149535
  - 0.100276
  - 0.000647383
  - 0.000101338
  - 0.0209089
  - 0.00366108
  - 0.873796
- key: 5
  prediction: 2
  scores:
  - 0.0048439
  - 0.000105955
  - 0.810874
  - 0.00665644
  - 0.000815119
  - 0.00121918
  - 0.00100165
  - 0.0151151
  - 0.0751259
  - 0.0842431
- key: 6
  prediction: 1
  scores:
  - 5.99334e-08
  - 0.987748
  - 0.00203607
  - 0.00626478
  - 5.05617e-05
  - 0.000297003
  - 6.14583e-05
  - 0.000487078
  - 0.0024817
  - 0.00057279
- key: 7
  prediction: 3
  scores:
  - 0.000191433
  - 1.08367e-06
  - 0.00137237
  - 0.984816
  - 1.26182e-05
  - 0.00102288
  - 6.42889e-07
  - 5.89483e-05
  - 0.0122277
  - 0.000295992
- key: 8
  prediction: 1
  scores:
  - 5.161e-06
  - 0.971483
  - 0.00174534
  - 0.00532335
  - 0.000445978
  - 0.00363754
  - 0.000348157
  - 0.00521967
  - 0.00764051
  - 0.00415152
- key: 9
  prediction: 4
  scores:
  - 0.000359493
  - 0.000114784
  - 0.000876791
  - 0.000155708
  - 0.95885
  - 0.00325834
  - 0.0195464
  - 0.00022779
  - 0.00797938
  - 0.00863121

 

バッチ予測サービスを使用する

Cloud ML バッチ予測サービスも使用できます。

最初に、バッチ予測ジョブのための名前を選択します、”predict_mnist_yourusername”。
英文字から始まり英数字とアンダースコアを含みます。

JOB_NAME=<your job name>

次に、バッチ予測ジョブを submit します :

gsutil cp data/predict_sample.tensor.json ${TRAIN_PATH}/data/
gcloud beta ml jobs submit prediction ${JOB_NAME} \
    --model=${MODEL_NAME} \
    --data-format=TEXT \
    --input-paths=${TRAIN_PATH}/data/predict_sample.tensor.json \
    --output-path=${TRAIN_PATH}/output \
    --region=us-central1

実行直後 :

createTime: '2016-10-23T13:20:35Z'
jobId: predict_mnist_classcat
predictionInput:
  dataFormat: TEXT
  inputPaths:
  - gs://classcat-tensorflow-ml/mnist_deployable_classcat/data/predict_sample.tensor.json
  modelName: projects/classcat-tensorflow/models/mnist_classcat
  outputPath: gs://classcat-tensorflow-ml/mnist_deployable_classcat/output
  region: us-central1
predictionOutput:
  outputPath: gs://classcat-tensorflow-ml/mnist_deployable_classcat/output
state: QUEUED

実行中 :

$ gcloud beta ml jobs describe --project ${PROJECT_ID} ${JOB_NAME}
createTime: '2016-10-23T13:20:35Z'
jobId: predict_mnist_classcat
predictionInput:
  dataFormat: TEXT
  inputPaths:
  - gs://classcat-tensorflow-ml/mnist_deployable_classcat/data/predict_sample.tensor.json
  modelName: projects/classcat-tensorflow/models/mnist_classcat
  outputPath: gs://classcat-tensorflow-ml/mnist_deployable_classcat/output
  region: us-central1
predictionOutput:
  outputPath: gs://classcat-tensorflow-ml/mnist_deployable_classcat/output
startTime: '2016-10-23T13:20:35Z'
state: RUNNING

終了を待ちます :

gcloud beta ml jobs describe --project ${PROJECT_ID} ${JOB_NAME}

最終的に、出力を読みます :

gsutil cat ${TRAIN_PATH}/output/prediction.results-00000-of-00001

以下は実際に確認できた出力です :

$ gsutil cat ${TRAIN_PATH}/output/prediction.results-00
000-of-00001
{u'prediction': 3, u'key': 0, u'scores': [0.020356435328722, 0.00012808165047317743, 0.002557950560003519, 0.6194452047348022,
 3.9615388232050464e-05, 0.3359093964099884, 0.0006723233964294195, 0.004730433691293001, 0.013618593104183674, 0.002541961381
211877]}
{u'prediction': 0, u'key': 1, u'scores': [0.9973371624946594, 7.484025843496056e-09, 3.8102345570223406e-05, 8.05008239694871e
-05, 3.4486083677620627e-07, 0.0024550205562263727, 2.9074832127662376e-05, 1.9415505448705517e-05, 3.208634370821528e-05, 8.1
76466508302838e-06]}
{u'prediction': 4, u'key': 2, u'scores': [0.003388544311746955, 0.0022374324034899473, 0.028930312022566795, 0.039913255721330
64, 0.6721255779266357, 0.005131898447871208, 0.015428278595209122, 0.024929305538535118, 0.02189120277762413, 0.1860242187976
8372]}
{u'prediction': 1, u'key': 3, u'scores': [3.443341711317771e-06, 0.9626880884170532, 0.009335516951978207, 0.00441769091412425
, 0.0004205082659609616, 0.0005956447566859424, 0.00022007898951414973, 0.0007216611411422491, 0.020943380892276764, 0.0006540
539907291532]}
{u'prediction': 9, u'key': 4, u'scores': [1.979799708351493e-05, 0.0003756166552193463, 6.387331086443737e-05, 0.0001495352771
5988457, 0.10027632117271423, 0.0006473834509961307, 0.00010133774776477367, 0.020908894017338753, 0.003661080962046981, 0.873
7961053848267]}
{u'prediction': 2, u'key': 5, u'scores': [0.004843897186219692, 0.00010595522326184437, 0.8108737468719482, 0.0066564441658556
46, 0.000815118954051286, 0.0012191830901429057, 0.0010016539599746466, 0.01511511579155922, 0.07512589544057846, 0.0842430591
583252]}
{u'prediction': 1, u'key': 6, u'scores': [5.993342000465418e-08, 0.9877484440803528, 0.0020360725466161966, 0.0062647750601172
45, 5.056171357864514e-05, 0.0002970028144773096, 6.145832594484091e-05, 0.0004870775737799704, 0.002481696894392371, 0.000572
7899260818958]}
{u'prediction': 3, u'key': 7, u'scores': [0.00019143284589517862, 1.0836668025149265e-06, 0.0013723709853366017, 0.98481637239
45618, 1.2618214896065183e-05, 0.0010228765895590186, 6.428894607779512e-07, 5.8948346122633666e-05, 0.012227668426930904, 0.0
002959921257570386]}
{u'prediction': 1, u'key': 8, u'scores': [5.1609990805445705e-06, 0.9714827537536621, 0.0017453399486839771, 0.005323346704244
614, 0.00044597769738174975, 0.0036375385243445635, 0.0003481570165604353, 0.005219669546931982, 0.007640512194484472, 0.00415
1524044573307]}
{u'prediction': 4, u'key': 9, u'scores': [0.000359493336873129, 0.00011478372471174225, 0.0008767909603193402, 0.0001557076757
3080957, 0.9588501453399658, 0.00325834471732378, 0.0195463877171278, 0.00022778974380344152, 0.00797937996685505, 0.008631209
842860699]}

前述のオンライン予測サービスと比較すると、このサービスは :

  • インスタンスの小さい数に対してはより遅いです(しかし大量のインスタンスに対してはより適しています)。
  • 入力とは異なる順序で出力が返されるかもしれません。
 

以上

クラスキャット

最近の投稿

  • LangGraph 0.5 : エージェント開発 : エージェントの実行
  • LangGraph 0.5 : エージェント開発 : prebuilt コンポーネントを使用したエージェント開発
  • LangGraph 0.5 : Get started : ローカルサーバの実行
  • LangGraph 0.5 on Colab : Get started : human-in-the-loop 制御の追加
  • LangGraph 0.5 on Colab : Get started : Tavily Web 検索ツールの追加

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2016年10月
月 火 水 木 金 土 日
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« 9月   11月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme