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 ML: HowTo: Cloud ML のための TensorFlow アプリケーション作法

Posted on 10/31/2016 by Sales Information

Google Cloud ML: HowTo: Cloud ML のための TensorFlow アプリケーション作法

Google Cloud ML では、クラウドで TensorFlow トレーナー・アプリケーションを実行することによってモデルをトレーニングします。実行させるためには、アプリケーションに2、3の変更を行ない、トレーニング・サービスが利用できる形式にする必要があります。

つまり Google Cloud ML でトレーニングして予測のためにホスティングするには、TenosrFlow のトレーナー・アプリケーションのコード変更が必要なわけです。
以下のドキュメントにこの必要なステップについて記述してありますので、要点をまとめてみました :

Preparing Your TensorFlow Application for Training in the Cloud

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

出力を定義する

トレーニングの間貴方は多分個々のインスタンスのために予測をエクスポートすることはしなかったでしょう、何故なら集約 (aggregates) は重要だからです。予測のためにモデルを配備する準備をする際には、一つあるいはそれ以上の出力テンソルを作成する必要があります。入力テンソルと同じ shape と共に、モデル・タイプのための適切なタイプの出力テンソルが通常は必要です。モデルの特定な要請に適合するよう異なる値を出力するために TenosrFlow グラフを構成することができます。

例えば、Google Cloud Machine Learning : 入門編 (3) – 予測 で使用されたサンプルではトレーニングの間にロジット層から raw スコアを生成するだけのモデルから始めます。 予測のためには、すべての可能性ある数字の確率分布に加えて、モデルが決定した、入力画像により尤もらしいと表される数字 (i.e. 0 から 9) を出力することを望みます。

このためには、TensorFlow グラフに以下の ops を追加しました :

prediction = tf.argmax(logits, 1)
scores = tf.nn.softmax(logits)

入力を作成する

配備するモデルは、入力値を受け取るための適切な型の一つあるいはそれ以上の入力テンソルを含むべきです。これは推論グラフにおける TensorFlow プレースホルダー であるべきです。

可変なバッチ・サイズをサポートする

トレーニングのためにグラフをセットアップする共通の方法は固定されたバッチサイズを使用することです。これは予測可能なサイズの入力データのテンソルを渡すことを簡単にします。予測のためにモデルを使用する準備ができた時、様々な数のインスタンスとともに予測リクエストを発行するクライアントをサポートするために、可変サイズの入力バッチをサポートすることを望むかもしれません。

これは、Google Cloud Machine Learning : 入門編 (3) – 予測 で使用されているサンプルでデモされているように、予測グラフにおいて入力テンソルのバッチ次元を None に設定することで成されます :

keys_placeholder = tf.placeholder(tf.int64, shape=(None,))
images_placeholder = tf.placeholder(tf.float32, shape=(None,  mnist.IMAGE_PIXELS))
labels_placeholder = tf.placeholder(tf.int32, shape=(None,))

インスタンス・キーを使用する

バッチ予測サービスは入力とは異なった順序で出力を書き出すかもしれませんので、入力インスタンスを出力予測とマッチできるように配備したモデルは一意のキーを使用してインスタンスを識別するべきです。

一つまたはそれ以上のキー (e.g. 単純な連続整数値) を予測時のインスタンスに追加できます。これを行なう一つの単純な方法は適切な型のプレースホルダーを追加して、入力データと同じ shape を使い、それをそのまま予測結果にスルーして渡すことです。

次はサンプルからの例です :

keys_placeholder = tf.placeholder(tf.int64, shape=(None,))

# To be able to extract the id, we need to add the identity function.
keys = tf.identity(keys_placeholder)

注意 : キーは必ずしも入力を通して直接渡す必要はありません; 実行時に計算される推論グラフにおける内部的なテンソルかもしれません。

グラフに入力と出力コレクションを追加する

Cloud ML 予測サービスがトレーニングしたモデルを実行できるようにするには、TensorFlow グラフ・コレクション における 入力と出力テンソルをそれぞれ inputs と outputs という名前で指定しなければなりません。これを行なうには各コレクションの辞書を作成してその JSON serialized 表現を tf.add_to_collection でグラフに追加します。

内部的なテンソル名の代わりに、予測のための入力あるいは出力テンソルを表すためにエイリアスを使用できます。 これらのエイリアスは、バッチ予測のための入力/出力ファイルあるいはオンライン予測のためのリクエスト/レスポンスにおいてテンソルに名前をつけるために使用されます。

以下はサンプルからの例です :

inputs = {'key': keys_placeholder.name, 'image': images_placeholder.name}
tf.add_to_collection('inputs', json.dumps(inputs))

outputs = {'key': keys.name,
           'prediction': prediction.name,
           'scores': scores.name}
tf.add_to_collection('outputs', json.dumps(outputs))

これは Cloud ML 予測サービスが :

  • 各予測入力に ‘key’ と ‘image’ を含むことを想定して
  • ‘key’, ‘prediction’, そして ‘scores’ を返す

ことを保証してくれます。

最終的なモデルをエクスポート(保存)する

トレーニング・スクリプトがモデルのトレーニングを終えたら、TensorFlow : How To : 変数: 作成、初期化、保存そしてロード のための標準的な手続きを使ってグラフをエクスポートします。 特に実行中のセッションを復旧してそれを MetaGraph にエクスポートするためには tf.train.Saver() を使います。

貴方のグラフはモデルの効率性や精度を助ける幾つかの ops を多分含むでしょう、しかしそれらは予測では使用されません。例えば、貴方のトレーニング・モデルに過学習に対するガードとしてトレーニング・データの複数表現を育成することを押し進めるためにドロップアウトを使うことを選択するかもしれません。一般的には配備モデルにおいてはそのような ops を含めることを望まないでしょう。トレーニング仕様の ops の全てを省くために、最終的なエクスポートの前に TensorFlow グラフを再構築すべきです。

注意 : ドロップアウトのような幾つかのケースでは、TensorFlow はトレーニング中心の ops をトレーニングのためには有効にしてテストと予測のためには無効にするように configure することを可能にします。予測のための配備の前にそのような ops をモデルから完全に削除するか configuration の変更だけにするかは貴方次第です。

以下はサンプルから最終的なモデルをエクスポートする例です :

if not os.path.isdir(FLAGS.model_dir):
  os.makedirs(FLAGS.model_dir)
saver.save(sess, os.path.join(FLAGS.model_dir, 'export')

エクスポート・ファイルを configure する

Cloud ML の予測サービスとの互換性のために、モデルは TensorFlow グラフ・ファイルと TensorFlow metagraph にエクスポートされなければなりません。これらのファイルはそれぞれ export と export.meta という名前でなければなりません。

TensorFlow アプリケーションへの変更

コマンドライン引数

Cloud ML は実行時、トレーナー・モジュールにコマンドライン引数を渡すことができます。アプリケーションにどのような引数が必要かを決めるのは貴方次第ですが、通常はこれらの引数を少なくともハイパーパラメータ値 (e.g. 隠れ層のサイズ) とチェックポイントを書き出す Google Storage パスを指定するために使うことを望むでしょう。

コードをパッケージ化する

貴方の既存の TensorFlow コードを Google Cloud Machine Learning と共に利用するためには、それを Python モジュールに含めなければなりません。多くの場合、それはサブディレクトリに __init__.py という名前の空ファイルと共に配置することを意味します。

もし貴方のトレーナーコードが依存としての追加の Python ライブラリを必要としないのであれば、gcloud beta ml jobs submit training はトレーニングコードを自動的にパッケージ化してトレーニングジョブのワーカーに配備します。

もしトレーナーコードが local.tar.gz あるいは .whl Python パッケージファイルとして利用可能な追加の Python ライブラリを必要とするならば、それらのパスを gcloud beta ml jobs submit training –packages フラグを使って指定可能です。

けれども、もしトレーナーコードが PyPi からの追加の Python パッケージを必要とするか、他のカスタムパッケージングを必要とするのであれば、カスタム setup.py ファイルを作成する必要があります。これについては次のセクションで記述されます。

パッケージをカスタマイズする

貴方のプロジェクトのためにカスタム・パッケージ仕様を作成するためには多くの方法があります。Setuptools を使った幾つかの簡単な説明をしておきます。

プロジェクトの root ディレクトリで setup.py という名前のスクリプトを作成します。このファイルに次のコードを入力します :

from setuptools import find_packages
from setuptools import setup

setup(
  name='your package name',
  version='your version number',
  packages=find_packages())

Setuptools のためにはより多くのオプションがあり、それらについては developer’s guide で見つかります。

トレーニング・ジョブを submit するために “gcloud beta ml jobs submit training” を実行する時、–package-path フラグを通常のようにトレーナー・モジュールを含むディレクトリに対してセットします; gcloud はデフォルトパッケージ仕様を使用する代わりに <–package-path>/../setup.py で指定されたようにトレーナー・コードをパッケージ化します。

 

以上

クラスキャット

最近の投稿

  • LangGraph 0.5 on Colab : Get started : Tavily Web 検索ツールの追加
  • LangGraph 0.5 on Colab : Get started : カスタム・ワークフローの構築
  • LangGraph 0.5 on Colab : Get started : クイックスタート
  • LangGraph on Colab : SQL エージェントの構築
  • LangGraph on Colab : マルチエージェント・スーパーバイザー

タグ

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