Question#3(Professional Machine Learning Engineer)

Question#3(Professional Machine Learning Engineer)

あなたは、小さいデータセットに対して XGBoost モデルをトレーニングする必要があります。
あなたのトレーニングコードは、カスタム依存関係(独自ライブラリなど)を必要とします。
あなたは、トレーニングジョブの起動時間(startup time)を最小化したいと考えています。

Vertex AI のカスタムトレーニングジョブを、どのように設定すべきですか?

ディスカッション 0

正解:A

この問題で重要なのは、二つの条件です。

  1. トレーニングコードにカスタム依存関係が必要であること

  2. トレーニングジョブの「起動時間」を最小化したいこと

起動時間を短くするためには、ジョブが開始される前に走る処理をいかに減らすかが最も重要です。Vertex AI のカスタムトレーニングジョブでは、コンテナイメージのダウンロードと、起動時のパッケージインストールが大きなオーバーヘッドになります。

選択肢 A は、トレーニングコードと必要な依存パッケージをあらかじめ カスタムコンテナに全て組み込んでおく構成です。この場合、ジョブ起動時に余計なインストール作業が発生せず、すぐにトレーニングスクリプトが実行されます。データは Cloud Storage に置いていますが、Vertex AI のトレーニングジョブは同一リージョン内で非常に高速に GCS にアクセスできるため、このデータ読み込みは起動時間にほとんど影響しません。むしろ、データをコンテナに含めてイメージサイズを肥大化させるより、コンテナをスリムに保つ方がダウンロードが短くなり、結果的に起動時間も短縮されます。

一方で B と D は、いずれも Python ソースディストリビューションによって実行時に依存関係をインストールする構成です。これはトレーニングジョブのたびに pip install のような処理が発生するため、起動時間が大きく伸びてしまいます。「起動時間を最小化する」という要件とは明確に矛盾します。

選択肢 C は、依存関係をカスタムコンテナに含められる点では悪くありませんが、データをコンテナに同梱する構成になっています。これはコンテナイメージが不要に大きくなるため、ジョブ起動時にイメージの取得に時間がかかります。また、データ更新のたびにコンテナを作り直す必要があり、実運用としても適切ではありません。

総合すると、カスタム依存関係を事前に含めつつ、イメージサイズを最小限に保つという観点で、選択肢 A が最も効率的であり、問題の要件に最も適合しています。そのため、正解は A となります。


コメント

コメント

コメントする

目次