Professional Machine Learning Engineer 認定試験範囲の解説
こんにちは。クラウドエース株式会社で Google Cloud 認定トレーナーをしている廣瀬 隆博です。皆さんは新しい事にチャレンジしていますか?私は昔から得意ではなかったスラッシュ メタルというヘヴィメタルのサブジャンルに再チャレンジしましたが、やはり得意ではありませんでした。とはいえ、それを再認識できたことはチャレンジしたおかげだなと感じています。
Google Cloud の資格にも私が得意ではないものがあり、それは機械学習の知識が問われる Professional Machine Learning Engineer です。これまでの記事でもずっと Google Cloud 認定トレーナー と記載してきましたが、所属部署は SRE 部 であり、インフラ領域を得意としています。そんな私が今回解説するのは同資格なのですが、これも私なりのチャレンジであり、結果として少しだけ機械学習と仲良くなれた気がします。
そんな私の自己学習を兼ねた記事ではありますが、試験対策にも役立つと思いますので、是非最後までお付き合いいただけますと幸いです。
本記事を読み始める前に
本記事は Professional Machine Learning Engineer の認定試験範囲について解説するものであり、機械学習に対してある程度の知識・経験を保有している方に向けた内容 となっています。Google Cloud の認定資格において最高難易度と評されることも多く、私の所属するクラウドエースにおいても資格所有者は多くはありません。
多くの方は Cloud Digital Reader や Associate Cloud Engineer、Professional Cloud Architect といった資格を取得してから本資格にチャレンジするようですね。
そういった背景もあり、本記事では Compute Engine や BigQuery、Cloud Storage といった一般的なプロダクトについては解説を省略しています。あらかじめご了承ください。
概要
はじめに、Professional Machine Learning Engineer 認定試験について整理しましょう。
前述の認定試験ガイド冒頭に記載された文章を Google の生成 AI である Gemini に要約してもらったところ、以下の通りでした。
この資格は、Google Cloud の技術を使って、機械学習モデルを構築、評価、導入、そして運用できることを証明する ものです。
主な役割
- データ分析を行い、機械学習モデルを構築する
- モデルの精度を検証し、問題点を修正する
- モデルを本番環境に導入し、運用する
- モデルのパフォーマンスを監視し、必要に応じて改善する
- 倫理的なAI原則に基づいて、偏りのないモデルを開発する
- チームと協力し、機械学習プロジェクトを成功に導く
求められるスキル
- 機械学習の知識(教師あり学習、教師なし学習、深層学習など)
- データ分析の経験
- Google Cloud の知識
上記より、機械学習の一般的な知識に関する試験というよりは、商用に耐えうる機械学習システムを Google Cloud に導入し、安定した運用を実現することが求められる ようです。
また、私としてはチームでの開発手法も重要であると考えており、多くのエンジニアが協力して開発できる仕組みを提供する ことが求められる試験だと感じています。ある程度規模が大きいシステムであれば、一人のエンジニアがすべてを開発することはなく、適宜分業していくことになるためですね。
機械学習の一般的な知識
まずは 機械学習の一般的な知識 について軽く触れましょう。あくまで試験範囲の解説ということもあって深入りはしませんが、少し知っておくことで問題が理解しやすくなるかもしれません。
機械学習とは
そもそも、機械学習とはどういったものでしょうか。私は以前から「人工知能(以下、AI) ってやつでしょ知ってるよ」というフワッと理解で生きてきました。それでは解説にならないので、ここでも Gemini 先生に教えてもらいましょう。
機械学習とは、コンピューターに大量のデータを学習させることで、データに潜むパターンや規則性を見つけ出し、その結果に基づいて予測や判断を行うデータ解析技術です。
機械学習は、人工知能の一種とみなされています。
従来のプログラミングでは、人間があらかじめすべてのルールをプログラムする必要がありましたが、機械学習では、コンピューター自身がデータから学習することで、人間が事前に定義していなかったルールを発見することができます。
とても端的で分かりやすいですね。人間が事前に定義していなかったルールを発見する という表現がとても気に入っています。機械が人間に代わってルールに気づいてくれるという近未来的な機能が私に「AI ってやつでしょ」と思わせたんだなぁと勝手に納得しました。
機械学習が実現できること
機械学習では、以下のようなことが実現できます。
- 画像認識: 画像から人物や物体を認識する
- 音声認識: 音声を文字に変換する
- 自然言語処理: 文章の意味を理解し、翻訳したり、要約したりする
- 異常検知: データから異常な値を見つける
- 予測分析: 過去のデータに基づいて将来の値を予測する
特に画像認識について、少し前までは「横を向いて」「上を向いて」みたいな指示に対する結果をリアルタイムに分析することは難しかったのではないかと感じます。現代のようにオンラインで身分証明ができるようになったのも、機械学習の発展による恩恵ですね。これが従来通りの仕組みであれば、「リアルタイムに横を向いたのか」「横を向いた画像を提示したのか」が判別できず、写真を提示することで別人になりすますこともできたんだろうと感じます。
機械学習の活用
機械学習は以下のような処理で活用されています。
- 画像処理: 顔認証、自動運転、画像検索など
- 音声処理: 音声翻訳、音声認識、音声アシスタントなど
- 自然言語処理: 機械翻訳、チャットボット、テキストマイニングなど
- マーケティング: 顧客分析、広告配信、レコメンデーションシステムなど
- 金融: 詐欺検知、リスク管理、株価予測など
- 医療: 画像診断、病状予測、創薬など
レコメンデーションは「同じ商品を購入している人は他にこういった商品も興味を持っていますよ」と紹介してくれる、昨今では当たり前になった仕組みですね。人間が定義したプログラムっぽい印象も受けますが、これも機械学習によるものです。大量のデータからルールを見つけるのが得意な機械学習 ですので、より精度の高いレコメンデーションが実現できるんですね。
モデル
機械学習における モデル とは、トレーニング データから学習し、将来のデータに対して予測や判断を行う仕組みです。具体的には、以下の2つの役割を担います。
- トレーニング データからパターンを学習する
モデルは、大量のトレーニング データを与えられ、その中から関係性や法則を学習します。人間が経験を通して学習するように、モデルも統計的な処理によってトレーニング データの特徴を捉えます。
- 新しいデータに対して予測や判断を行う
学習したモデルは、新しいデータを入力されると、そのデータの特徴に基づいて予測や判断を行います。例えば、過去のメールデータから学習したモデルであれば、新しいメールがスパムかどうかを判定することができます。
このように記載すると簡単な仕組みだと感じますが、トレーニング データを与えただけで新しいデータを判断してくれるのはとても凄いことです。まさに「人間が事前に定義していなかったルールを発見する」仕組みだと言えるでしょう。
教師
急に学校の話か?と思われる 教師 ですが、機械学習においては少し異なった意味を持ちます。機械学習には、教師あり学習と教師なし学習の2種類があります。
- 教師あり学習: ラベル付きのデータを使って学習する
- 教師なし学習: ラベルなしのデータを使って学習する
これだけだと「ラベルってなんだよ」となりますね。ここでは、ラベル
を 答え
だと考えてください。例えば、ひまわりの画像と「ひまわり」というラベル、チューリップの画像と「チューリップ」というラベルなどが教師データとなります。
つまり、教師あり学習では、モデルは教師データから入力と出力の関係を学習し、新しいデータに対して教師データにないラベルを予測することができます。「規則性を効率的に見つける」ことができるといった表現になるかもしれません。
機械学習の手法
モデルを作成するための手法はいくつも存在しており、それだけで本が書けるくらいです。ここでは、代表的なものについて概要をお伝えします。
回帰
回帰 とは、入力データと出力データの間の関係をモデル化し、連続的な数値を予測するための手法です。1 年間で 10 万円貯金できた人は、10 年後にいくら貯金が溜まっているのかを予測するような感じですね。
以下に Gemini が教えてくれた回帰の種類を記載します。
手法名 | 説明 | 例 |
---|---|---|
線形回帰 | 最も基本的な回帰手法。データポイント間に直線をフィットさせて予測を行う。 | 家の面積に基づいて家の価格を予測 |
多項式回帰 | 線形回帰の拡張。データに対して多項式の曲線をフィットさせる。 | 非線形な関係性を捉える場合に有効 |
リッジ回帰 | 過学習を防ぐために正則化項を追加した線形回帰。 | データが少ない場合やノイズが多い場合に有効 |
ラッソ回帰 | リッジ回帰と同様に正則化を行いますが、特徴選択も同時に行う。 | 重要度の低い特徴を自動的に排除 |
分類
分類 とは、データを特定のカテゴリやクラスに分けるプロセスのことを指します。前述した「ひまわり」「チューリップ」の例も分類ですね。
以下に Gemini が教えてくれた分類の種類を記載します。ニューラル ネットワークはよく耳にするような気がします。人間の脳の神経細胞(ニューロン)の働きを模倣しているらしく、いかにも AI な仕組みが印象に残っているのかもしれませんね。
アルゴリズム名 | 説明 | 例 |
---|---|---|
ロジスティック回帰 (Logistic Regression) | ロジスティック回帰は、二項分類(バイナリ分類)に広く使用されるアルゴリズムです。入力特徴量とクラスの間の線形関係をモデル化し、シグモイド関数を使用して確率を出力します。 | スパムメール分類 |
k近傍法 (k-Nearest Neighbors, k-NN) | k-NN は、あるデータポイントのクラスを、そのデータポイントに最も近いk個の近傍のクラスに基づいて決定するシンプルなアルゴリズムです。距離の計算にはユークリッド距離などが使われます。 | 手書き数字認識 |
サポートベクターマシン (Support Vector Machine, SVM) | SVM は、データポイントを異なるクラスに分けるための最適なハイパープレーンを見つけるアルゴリズムです。線形分離が難しい場合は、カーネル関数を使って高次元空間にマッピングすることができます。 | 画像分類 |
決定木 (Decision Tree) | 決定木は、データを特徴に基づいて分割し、ツリー構造を形成するアルゴリズムです。各ノードは特徴量の値に基づいてデータを分割し、リーフノードは最終的なクラスを表します。 | 顧客の購入予測 |
ランダムフォレスト (Random Forest) | ランダムフォレストは、複数の決定木を作成し、それらをアンサンブルすることで予測の精度を向上させるアルゴリズムです。各決定木は異なるサブセットのデータで訓練され、最終的な予測は多数決で決定されます。 | クレジットカード不正検出 |
ナイーブベイズ (Naive Bayes) | ナイーブベイズは、ベイズの定理に基づいた確率的分類アルゴリズムです。特徴量が互いに独立であると仮定し、各クラスの確率を計算して最も高い確率のクラスを選びます。 | テキスト分類 |
ニューラルネットワーク (Neural Networks) | ニューラルネットワークは、多層の人工ニューロンからなるモデルで、複雑な非線形関係を学習することができます。ディープラーニングでは、特に多層のニューラルネットワーク(ディープニューラルネットワーク)が使用されます。 | 画像認識 |
勾配ブースティング (Gradient Boosting) | 勾配ブースティングは、複数の弱い学習器(通常は決定木)を逐次的に訓練し、誤差を最小化することで予測精度を向上させるアンサンブル学習法です。XGBoost や LightGBM などのライブラリがよく使われます。 | 顧客離脱予測 |
モデルの評価
評価 とは、モデルの性能を測定し、その有効性を確認するプロセスです。評価を行うことで、モデルがどれだけ正確に予測や分類を行えるかを把握し、改善点を見つけることができます。機械が学習してくれる仕組みなので、その結果が期待通りであるかチェックしておく目的ですね。
これも Gemini に聞いてみました。
評価指標
どんな値を用いて評価するのか定義したものが 評価指標 です。正解率とか分かりやすいですね。
指標 | 説明 |
---|---|
正解率 | 全体のデータに対して正しく予測できた割合を示します |
精度 | 正と予測したもののうち、実際に正である割合を示します |
再現率 | 実際に正であるもののうち、正と予測できた割合を示します |
F1 スコア | 精度と再現率の調和平均を示します |
ROC 曲線 と AUC | 偽陽性率と真陽性率の関係を示し、AUCはその曲線の下の面積を示します |
評価方法
例えば学習に用いたデータをそのまま評価にも用いた場合、ほとんど同じ結果になりそうですよね。それでは正しい評価にならないので、さまざまな方法を用います。ホールドアウト法はとてもシンプルですね。
方法 | 説明 |
---|---|
ホールドアウト法 | データセットを訓練データとテストデータに分けて評価します |
交差検証 (Cross-Validation) | データセットを複数の部分に分け、各部分をテストデータとして使用し、残りを訓練データとして使用します。このプロセスを繰り返して平均性能を評価します |
リーブワンアウト交差検証 (Leave-One-Out Cross-Validation) | 各データポイントを一度だけテストデータとして使用し、残りを訓練データとして使用します |
再トレーニング
多くのケースにおいて、機械に学習させたいデータは増えていくものです。それに対して、モデルが古いままでは最適な結果とはなりませんし、新しいパターンが増えているかもしれません。そこで、定期的な再トレーニング を計画します。
新しいデータを集め、トレーニングし、評価することで品質を担保します。これらの処理がすべて正常に終了すればモデルをデプロイするという、Continuous Integration/Continuous Delivery & Deployment(以下、CI/CD)な仕組みを用いることが多いですね。CI/CD については後ほど改めて記載します。
過学習
過学習 とは、文字通り過剰に学習させた状態です。機械学習のトレーニングとは、トレーニングデータからルールを発見する仕組みだというのは既にお伝えした通りですね。過剰に学習させてしまうことで、トレーニングデータのルールに特化し過ぎてしまい、その他のデータでは精度が出なくなってしまいます。勉強し過ぎることが良くないというのは、人間からすると不思議な感じですね。
L1/L2 正則化
過学習を抑止するための仕組みの一つとして、正則化 があります。データの特徴に対して考慮を加えることで過学習を防ぐ効果があります。L1 正則化と L2 正則化について、 Gemini に簡単な説明をしてもらいました。試験対策という観点では、これくらいざっくり覚えておくと良いかもしれません。
- L1 正則化(Lasso)
- 特徴: 不要な特徴をゼロにする
- 効果: 重要な特徴だけを選び出す
- 例え: 必要な道具だけを残して、使わない道具は捨てる
- L2 正則化(Ridge)
- 特徴: 重みを小さくする
- 効果: モデルが過度に複雑になるのを防ぐ
- 例え: 大きな重りを持たずに、軽い重りだけを使う
詳しく知りたい方は以下のドキュメントをご参照ください。
ハイパーパラメータ
ハイパーパラメーター とは、機械学習モデルの学習プロセスを制御するために設定されるパラメーターのことです。さきほど説明した正則化もここで設定することができます。
いくつかの一般的なハイパーパラメーターの例を以下に示します
- 学習率(Learning Rate): モデルのパラメーターを更新するステップサイズを決定します。学習率が大きすぎると収束しない可能性があり、小さすぎると収束が遅くなります。
- バッチサイズ(Batch Size): 一度に処理するトレーニングデータのサンプル数を決定します。大きなバッチサイズはより安定した勾配を提供しますが、多くのメモリを消費します。
- エポック数(Number of Epochs): トレーニングデータ全体を何回繰り返して学習するかを決定します。
- 正則化パラメーター(Regularization Parameter): 過学習を防ぐためにモデルの複雑さを制御します。
ヒューリスティック
機械学習に必要なデータが揃っていない場合、まずは機械学習を使わずにシステムを稼働させる方法があります。その際には、経験則を用いたプログラムで機械学習に近しい挙動を実現します。データが十分に集まったら、プログラムを機械学習に置き換えることで精度を高めます。
このように、経験則に基づいてプログラムを動作させている状態を ヒューリスティック と呼びます。ヒューリスティックとは、完全なデータや理論がない状況でも、実用的な解決策を見つけるための方法です。
機械学習ライブラリ・フレームワーク
フロントエンドやバックエンドでもそうですが、機械学習においても様々なライブラリやフレームワークが提供されています。後述のベストプラクティスに登場するものをいくつか紹介します。
名称 | 解説 |
---|---|
TensorFlow | TensorFlow は Google が開発したオープンソースの機械学習ライブラリで、特にディープラーニングモデルの構築、トレーニング、デプロイに広く使用されています。強力な数値計算ライブラリを備えており、大規模な分散トレーニングや推論をサポートします。Keras という高レベル API を提供し、使いやすさも兼ね備えています。 |
scikit-learn | scikit-learn は Python で実装された機械学習ライブラリで、分類、回帰、クラスタリング、次元削減などのアルゴリズムを提供します。データの前処理、モデルのトレーニング、評価、ハイパーパラメータチューニングを簡単に行えるため、教育やプロトタイピングに広く利用されています。 |
XGBoost | XGBoost は勾配ブースティングフレームワークで、高い性能と効率性を持つ決定木ベースのアルゴリズムです。大規模なデータセットに対しても高速に動作し、精度が高いため、コンペティションや実務で広く使用されています。さまざまなプラットフォームや言語で利用可能です。 |
PyTorch | PyTorch は Facebook が開発したオープンソースのディープラーニングライブラリで、動的計算グラフを特徴としています。直感的な操作性と柔軟性があり、研究開発やプロトタイピングに適しています。TensorFlow と並んで、ディープラーニングの主要なライブラリの一つです。 |
Keras | Keras は高レベルのニューラルネットワーク API で、TensorFlow 上で動作します。簡潔で使いやすいインターフェースを提供し、モデルの構築、トレーニング、評価を迅速に行うことができます。初心者から専門家まで幅広く利用されています。 |
機械学習に関する情報の紹介
私の所属するクラウドエースでは、コラムという形で機械学習の理論を解説しています。ここまで Gemini に聞いた内容よりも深く知りたい方は、以下を参照してみてはいかがでしょうか。
また、Google も 機械学習 集中講座 を公開しています。全部読むと丸一日かかりそうなボリュームですが、動画も含まれており、学習しやすい工夫がされていますね。
Google Cloud のプロダクト
ここからは、Google Cloud で機械学習システムを構築する際に使われるプロダクトについて解説していきます。Google Cloud の公式ドキュメントではベスト プラクティスも公開されているので、良く深く知りたい方はこちらも合わせてご参照ください。
機械学習プロダクト
まずは機械学習のために提供されているプロダクトです。ここでは試験に出そうなものをピックアップしているので、最新情報は公式サイトをご参照ください。
Vertex AI
Google Cloud の機械学習プロダクトと言えば Vertex AI と言っても過言ではないかもしれません。とはいえ、これはプロダクトというよりブランド名みたいな感じでしょうか。Vertex AI Training みたいな形で、さまざまな機能が提供されています。
Vertex AI Training
モデルをトレーニングするためのプロダクトが Vertex AI Training です。下記の画像は Google Cloud の公式ドキュメントから引用したものですが、学習データとプログラムを用いてコンピューティングリソースで学習し、完成したモデルを格納するまでの処理を担当します。
コンピューティング リソース
Vertex AI に関する内容ではありませんが、引用した画像に登場していることもあり、機械学習を動作させるコンピューティングリソースについても覚えておきましょう。TPU は Google が開発したものなので、Google Cloud とは相性が良さそうですね。
リソース | 特徴 | 使用例 |
---|---|---|
CPU (Central Processing Unit) | 汎用的な計算に適しているおり、コストが比較的低いが並列処理能力はGPUやTPUに劣る | 小規模なデータセットの前処理や簡単な機械学習モデルのトレーニング、デバッグやテスト目的のトレーニングなど |
GPU (Graphics Processing Unit) | 大量の並列計算が得意であり、ディープラーニングモデルのトレーニングに最適だが高コスト | 大規模なディープラーニングモデルのトレーニング、コンピュータビジョン、自然言語処理(NLP)タスク、高速なモデル推論など |
TPU (Tensor Processing Unit) | Google が開発した専用のハードウェアであり、TensorFlow に最適化されている | TensorFlow を使用したディープラーニングモデルのトレーニングや大規模なデータセットでのトレーニング、リアルタイム推論など |
Vertex AI Prediction
学習したモデルを用いて予測を実行するためのプロダクトが Vertex AI Prediction です。オンライン予測とバッチ予測の二種類があるので覚えておきましょう。
- オンライン予測
- リアルタイムで予測を行うため、ユーザーの入力に即座に反応するアプリケーションに適しています
- バッチ予測
- 大量のデータを一括して予測するため、定期的なレポート生成や大量データの分析に適しています
Vertex AI Model Registry
Vertex AI Model Registry は、Artifact Registry の 機械学習版と書けば伝わる人もいるかもしれません。モデルを格納したりバージョン管理するために使用します。新旧モデルの比較や、万が一リリースしたモデルによってトラブルが発生した場合のロールバックには欠かせないですね。
Vertex AI Pipelines
機械学習システムの自動化に用いられるのが Vertex AI Pipelines です。前述のように機械学習システムにはモデルの再トレーニングやデプロイといった仕組みが必要であり、そういった仕組みは MLOps とも呼ばれます。TensorFlow Extended または Kubeflow Pipelines を使用することができます。
TensorFlow Extended
TensorFlow Extended とは、TensorFlowを使用した機械学習パイプラインの構築とデプロイを支援するエンドツーエンドのプラットフォームです。
Kubeflow Pipelines
Kubeflow Pipelines とは、Kubernetes上で動作する機械学習パイプラインです。TensorFlow以外のライブラリやフレームワークを使用する場合に選択されます。
Vertex ML Metadata
機械学習システムのメタデータを記録するためのプロダクトが Vertex ML Metadata です。学習に用いたデータやハイパーパラメータ、結果などを記録したり、ダッシュボードで可視化することができます。モデルの改善にも役立つデータですね。
Vertex AI Model Monitoring
モデルのパフォーマンスと品質を評価するためのプロダクトが Vertex AI Model Monitoring です。しきい値を設定してアラートしたり、再トレーニングを指示することが可能となります。Cloud Monitoring の機械学習版と言えるかもしれませんね。
Vertex AI Workbench
Vertex AI Workbench とは、Jupyter ノートブック ベースの開発環境です。Vertex AI をはじめとする Google Cloud のプロダクトを操作することができます。
AutoML
機械学習の知識が限られている人に向けたプロダクトが AutoML です。Vertex AI とも統合されており、公式ドキュメントでも Vertex AI に分類されています。プログラムを書かなくてもカスタム機械学習モデルを開発することができます。
BigQuery ML
BigQuery ML によって、BigQueryのデータを SQL クエリで操作してモデルを作成することができます。Vertex AI より手軽ではあるものの高度なカスタマイズは難しいので、用途に応じて使い分けが必要です。
事前学習済み API
ここまでに様々なプロダクトを紹介してきましたが、もっと手軽に機械学習のシステムを作ることも可能です。Google が事前に学習させたモデルを API として公開 しているので、それを活用しましょう。Gemini にサンプル プログラムを生成させると 10 行程度の短いものが提示されたので、とても簡単に試せることが分かりますね。
生成された Python のサンプル プログラム
このコードでは、指定した画像ファイルに対してラベル検出を行い、検出されたラベルを出力します。Google Cloud のクライアント ライブラリを利用して、API を簡単に呼び出すことができます。
import io
import os
from google.cloud import vision
# クライアントを作成
client = vision.ImageAnnotatorClient()
# 画像ファイルを読み込む
file_name = os.path.abspath('path/to/your/image.jpg')
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = vision.Image(content=content)
# ラベル検出をリクエスト
response = client.label_detection(image=image)
labels = response.label_annotations
print('Labels:')
for label in labels:
print(label.description)
そんな事前学習済み API について、代表的なものをいくつか紹介します。
API名 | 説明 |
---|---|
Vision API | 画像のラベル付け、顔認識、ランドマーク検出、ロゴ検出、テキスト認識(OCR)などを行います。 |
Speech-to-Text API | 音声をテキストに変換します。複数の言語や方言をサポートしています。 |
Text-to-Speech API | テキストを自然な音声に変換します。複数の声のタイプや言語を選択できます。 |
Translation API | テキストを異なる言語に翻訳します。リアルタイムの翻訳も可能です。 |
Natural Language API | テキストの解析を行い、感情分析、エンティティ認識、構文解析などを提供します。 |
Video Intelligence API | 動画の内容を分析し、シーン検出、オブジェクト追跡、ラベル付けなどを行います。 |
機械学習以外のプロダクト
機械学習のシステムを構築する際によく使われるプロダクトも理解しておきましょう。
Cloud Composer
Cloud Composer とは、Apache Airflow をベースに構築された、フルマネージドのワークフロー オーケストレーション サービスです。機械学習に特化したものではありませんが、機械学習パイプラインを構築する際の選択肢となります。
Dataflow
Extract(抽出)、Transform(変換)、Load(格納)の頭文字を取って ETL と表現します。ここでは、機械学習に用いるデータをシステムが扱えるように変換して格納することを表します。Dataflow はそんな ETL にも用いられるプロダクトであり、Apache Beam をベースにしています。
Dataproc
Dataproc は、Dataflow と同様に ELT のプロダクトとして用いられます。Apache Hadoop、Apache Spark をはじめとする数多くのソフトウェアに対応しています。
Cloud Data Fusion
Dataflow や Dataproc はコードを書いて ETL 処理を動かすのですが、やはり GUI で簡単に済ませたいという需要もありますよね。Cloud Data Fusion はそういった要望に適しています。処理を動かすと Dataproc が動作するので、Dataproc単体よりコストが高いことに注意しましょう。
Cloud Dataprep
Cloud Data Fusion は実際の処理が Dataproc で動作していましたが、Cloud Dataprep は Dataflow が動作します。Cloud Data Fusion と比較すると、データの探索やクリーニング向きであり、システムに組み込む用途には不向きですね。
Data Loss Prevention
機密性の高いデータを検出し、保護するためのプロダクトが Cloud Data Loss Prevention です。データを難読化したり匿名化することで、データの機密性を維持しつつ学習に用いる目的で使用されます。
機械学習システム設計
機械学習の一般知識と、機械学習に用いる Google Cloud プロダクトを解説しました。ここからは、前述の要素を用いて機械学習のシステムを構築する際に考慮すべきポイントについて解説します。それほど内容は多くはないのですが、公式の模擬試験やプロジェクト対応での知見に基づくものであり、試験対策に役立つかもしれません。
デプロイとテストの自動化
デプロイとテストの自動化 と言えば、継続的インテグレーション(以下、CI)、継続的デリバリー(以下、CD)ですね。MLOps ではこれに追加して継続的トレーニング(以下、CT) も存在しています。既に解説した通り、モデルが変わらないとしても最新のデータを用いて定期的なトレーニングが必要なためですね。
下記の画像は Google Cloud の公式ドキュメントから引用したものですが、CI / CD パイプラインが動作した後は CT パイプラインも動作するように設計しましょう。これは、機械学習のコードが変わった場合にも再トレーニングさせるためです。
コンピューティングリソースのコスト削減
機械学習は高度になるほど処理能力を要するものであり、総じて費用も高額になりがちです。少しでもコストを削減するためには、Compute Engine や Google Kubernetes Engine のプリエンプティブル VM を用いる方法が有効です。
ただし、プリエンプティブル VM は予期せぬタイミングで停止されるため、処理が中断した際に再開できるように チェックポイント を設定する必要があります。複雑な仕組みを想像するかもしれませんが、一連の処理が途中で停止しても再開できるよう考慮するものであり、下記の Google Cloud 公式ブログでも紹介されているように、多くのフレームワークでは容易にチェックポイントが作成できるようサポートされています。
BigQuery へのリアルタイム データ取り込み
低遅延な仕組みが求められる場合、Pub/Sub から BigQuery へ直接データを取り込む ことを検討しましょう。低遅延かつ ETL 処理が必要な場合は Dataflow と組み合わせる事が多いのですが、ETL 処理自体を省略することでシンプルかつ低遅延な仕組みを実現することができます。
おわりに
Professional Machine Learning Engineer 認定試験ガイドと公式模擬試験から私の主観で解説した本記事は以上となります。他の Google Cloud 認定試験とは異なり、Google Cloud の知識だけではなく機械学習の知識も必要であり、最高難易度と言われるのも納得の内容ですね。とはいえ、SRE が本業である私でも合格できた試験ですので、本記事を読んで興味を持たれた方は是非ともチャレンジしてみてください。
クラウドエース株式会社 Google Cloud 認定トレーナーの廣瀬 隆博がお届けしました。また次の記事でお会いしましょう。
Discussion