第20章. 構想問題のためのMLパイプライン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章と次の章では、一般的なML問題の全体像を示す2つのMLパイプラインを説明する。問題を設定し、その解決策をどのように実装したかを紹介する。前の章を読み取り、その詳細を参照することを前提とする。
この章では、典型的なコンピュータ・ビジョンの問題を説明する。我々は画像分類問題のためのMLパイプラインを設計している。MLモデルそのものは驚くようなものではないが、複雑なモデルを作ることが目的ではない。私たちはモデルをシンプルなものにしたかった。そうすれば、MLパイプライン(ML本番システムの興味深い側面)に集中できる。
この例では、ペットの画像をネコとイヌに分類するMLモデルを学習したい(図20-1)。
図20-1. 分類問題
この例では、MLモデルについて簡単に説明し、前の章を踏まえてパイプラインに焦点を当てる。特に、画像データをどのようにインジェストするか、あるいはどのように前処理するかについて強調する。
警告
この記事を書いている時点では、TFXはアップルのシリコン・アーキテクチャに基づくノートPCをサポートしていない。このアーキテクチャに基づくノートPC(例えばM1s)を使用している場合は、GoogleのColabをTFXと連携させることを強くお勧めする。
データ
この例では、Microsoft Researchが編集した公開データセットを使用する。このデータは、犬と猫の写真25,000枚からなり、2つのフォルダに分けられている。サンプルコードには2つのシェルスクリプトが含まれており、それぞれの環境(ローカルデプロイ、Kubeflow、Google Cloud Vertex)にデータをセットアップするのに役立つ。1つのスクリプトは、データセットをローカルコンピューターにダウンロードする。このスクリプトは、自分のコンピューターから例に従いたい場合に使用する。リモートのGoogle Cloudバケットにデータセットをダウンロードしてセットアップするシェルスクリプトも提供する(computer_vision/scripts/set_up_vertex_run.sh)。
我々のモデル
サンプルモデルはTensorFlowとKerasを使って実装した。MobileNetと呼ばれるKaggleの事前学習済みモデルを再利用した。MobileNetは、何年もの間、コンピュータ・ビジョンの問題解決に最適な選択肢だった。このモデルは160×160×3ピクセルの画像を受け付ける。事前訓練されたモデルはベクトルを出力し、それをニューラルネットワークの密なレイヤーを通してさらに制約し、最後に出力ノード(1つはカテゴリー「犬」を表し、もう1つはカテゴリー「猫」を表す)を持つソフトマックス・レイヤーを通して制約する。
コード全体の設定を以下のコードブロックに示す:
image_input=tf.keras.layers.Input(shape=(constants.PIXELS,constants.PIXELS,3),name=utils.transformed_name ...