先日、「DP-100 Microsoft Certified: Azure Data Scientist Associate(DP-100)」に合格しました。
その名称の通りデータサイエンティスト向けの専門資格となるのですが、試験の内容としては機械学習が90%ほどです。
試験範囲にも記載がありますが基本的にAzure Machine Learning(Azure ML)とMLFlowに関する知識が問われます。
DP-100は基本的にはAzure MLの使い方やモデルのトレーニング、デプロイの方法を問われる試験と思っていただければと思います。
単純な手順や実現可能な機能もそうですが、コードの問題も問われます。
なのでPythonに関する知識も一定数は必要で、特にデータ分析で利用するライブラリに関しては知っておいた方がいいでしょう。
結構、専門性が高い領域なので一般的な開発者やインフラエンジニアでは初見で正解を判断するのは難しい内容が多いです。
そこで今回はDP-100 Microsoft Certified: Azure Data Scientist Associateの試験対策と合格方法について紹介していきます。
ポイントの抑え方、事前にやっておいたことがいいことをまとめていきたいと思います。
DP-100も試験情報がかなり少ないため参考にして頂ければと思います。
DP-100 Microsoft Certified: Azure Data Scientist Associateの試験対策
まずは前提ですが、筆者の方は以下の条件で学習を開始しました。
その状況を踏まえて行った勉強方法について紹介していきます。
- Azure MLはチュートリアルレベルで利用経験があり
- MLFlowもDatabricksで利用経験あり
- 大学で数学(統計学)を専門にしていた
Azureでの機械学習に触れる機会自体は業務でもあったのですが、本格的に利用した経験はありません。
また元々インフラエンジニアなので機械学習自体をそもそも深く理解していない状況です。
MLFlowについても知っていることもありましたが知らないことの方が多いですね。
大学時代に統計学を専門にしていたので、線形回帰、分散、標準偏差といった分析で用いる基本的な用語だけは何とか知っているというところはありました。
Azure Machine Learning
DP-100で問われるメインのサービスはAzure Machine Learningです。
このAzure MLについてはある程度基礎だけではなく使い方などまで覚える必要があります。
細かい手順を問われる設問もあるので、以下は覚えるようにしました。
- ワークスペースの作成
- Notebookの利用
- Computeの利用
- AutoML
- パイプライン
ワークスペースは可能な限り実際に作って、サンプルやチュートリアルを実施しておく必要があると感じました。
正直、知識ベースだけで合格するのは結構大変ではないかと思います。
ワークスペース一つ作るにしても、Azure上からも作成できますしAzure Machine Learning Studioからも作成できます。
Computeに関しても必須で、「コンピュートインスタンス」「コンピューティングクラスター」「推論クラスター」「アタッチされたコンピューティング」の違い、用途は絶対に覚えておきましょう。
特にリアルタイム処理=推論クラスター=AKS(Azure kurbenetes)クラスターなのでここは認識しておきましょう。
AutoMLに関しても手順や結果を見ておくと実際の試験でも大いに役に立つ知識がたくさん見につきます。
チュートリアル: Azure Machine Learning スタジオでコードなし AutoML を使用して分類モデルをトレーニングする
チュートリアル: Azure Machine Learning Studio でコードなし自動機械学習を使用して需要を予測する
チュートリアルの実施はかなりお勧めです。
パイプラインに関してはかなり難しいのですが、時間があればMicrosoft Learnでチュートリアルをやっておくといいでしょう。
私は概念的なところだけ学習して試験に臨みましたが、パイプラインの設問には苦戦したので念入りに確認した方がいいかもしれません。
他にもAzure CLIから出来ること、Azure Machine Learning Studioから出来ること、Notebookでできることなど意外とAuzre MLは多機能なので覚えることが思っている以上に多いと思います。
MLFlow
機械学習に精通している人であればご存じかもしれませんが、一般的なエンジニアの方はMLFlowのことはほとんど知らないと思います。
MLFowは機械学習のオープンソースなのですが、今はDatabricks社が開発しているものでAzure Databricksでは標準で利用することが可能です。
ポイントとしては、DP-100ではAzure DatabricksでMLFlowを使った内容を問われるのではなくあくまでもAzure MLでMLFowの機能をどう使うかという点です。
Azure MLではMLFow SDKを利用することが出来るので、そこでどういったことが出来るかを学習する必要があります。
覚えておくこととしては主に以下です。
- ログとメトリックの設定方法
- 成果物(Artifact)の設定方法
- クラスターの設定方法
ここでも概念的に「何が出来るか」というより「どうやって実装するか」を問われます。
なので基本的にはPythonのコードでMLFowをどう使うかを覚える必要があります。
普段からコードを書いている人は類推で対応可能とは思います。
MLFow自体が初耳だという人は、これらのサンプルコードは頭に入れておいた方がいいと思います。
機械学習(Deep Learning)
Azure MLとMLFowについて学習するのは必須ですが、そもそも「機械学習とは何か?」ということもある程度は理解しないといけません。
数学的な知識まで待ち合わせていれば試験対策としては完ぺきと思いますが、そこまで専門性のある人は少数派かと思います。
とはいえ、試験としては「〇〇のときはどの分析を行うか?」のような簡単な問題も少ないです。
なので、機械学習の種類とそれらの特徴を理解する必要があります。
- 教師あり学習
- 教師なし学習
- ニューラルネットワーク
教師あり学習では回帰分析を使って数値予測と分類が行えます。
教師なし学習では特徴をグルーピングするクラスター分析が行えます。
画像分析は畳見込みニューラルネットワーク(CNN)、音声はリカレントニューラルネットワークを(RNN)を利用します。
こういった基礎的な機械学習の知識を身に着けたうえで、Azure MLでの設定方法やモデルのトレーニングについて問われていくイメージです。
他にも外れ値の可視化や処理についても理解する必要があります。
TensorflowやPyTorchといった機械学習用のライブラリの種類や出来ることも学習しておくことをお勧めします。
Python
機械学習では一般的にPythonが利用されます。
会社によってはRやScalaの場合もあると思いますが、試験で問われるのはPythonになります。
なので初めてコードを見聞きする、書いたことがない人が試験を受けるのはかなりきついと思います。
Azure Machine Learning Studioを使ってGUIベースで機械学習が実装できるというのはAzure MLの良い特徴でもあるのですが、多くの詳細な操作はPythonで行われることが多いです。
機械学習以外のライブラリとしてデータ分析で一般的に利用されるPandasなども使い方や出来ることを覚えておく必要があります。
Pythonの書き方だけではなくデータサイエンスに使われるライブラリを使った設問も出る可能性があるので、Pythonそのものについてもある程度は読む力がないと試験では解けない問題が多いと思っていただければと思います。
このあたり、DP-100はAzure関連試験の中でもコードの出題が非常に多いと感じました。
DP-100の試験対策
ここまで試験の対策について紹介してきました。
次は具体的な勉強方法について紹介していきたいと思います。
まず、私が試験に合格した時の環境を紹介します。
勉強時間:30H程度(1日1H~1.5H 3週間程度)
AzureMLの経験:初心者レベル
機械学習の経験:初心者レベル
上記の通り、短期間の学習で十分合格が可能です。
ただし、合格時のスコアは740点程度でしたので、かなりギリギリで試験時も余裕がなく非常に難易度が高く感じました。
Microsoft Learn
まず最初に試験対策で利用するべきはMicrosoft Learnです。
試験の公式ページのコレクションはすべて実施しておくことをお勧めします。
試験 DP-100: Azure でのデータ サイエンス ソリューションの設計と実装
実務で十分精通しているという人は不要と思います。
不随するチュートリアルや演習も時間があればやっておきましょう。
個人的にですがパイプラインの作成などは机上はあまり理解できず前述の通り試験では苦戦しました。
これも冒頭で書いたのですがAuzre MLを覚える上で、MLFlowやNotebook、クラスターやPythonなど意外と覚えることが多いです。
試験範囲は狭く見えるのですが実際に問われる範囲は広く感じました。
Udemy
Udemyでは英語教材しかないので基本的には翻訳して利用しました。
ただし、翻訳するとPythonのコードまで翻訳されてしまうのでコードだけは原文に戻して確認することをお勧めします。
https://www.udemy.com/course/practice-exams-ms-azure-dp-100-design-implement-ds-sol/
問題が無駄に長いので慣れるまで大変とは思いますが、現状で出来る試験対策はこちら程度なので我慢してやってみましょう。
実際、試験対策になるかどうか言うと「ちょっと微妙」という感じですが、機械学習そのものの学習には非常に有益ですし、データセットの扱いについても理解が深まるので良い問題集と思います。
ちなみに類似問題はほぼありませんでした。
試験で大苦戦。なぜ合格できたのか
実際の試験では大苦戦でした。
はっきり申し上げて思っていた3倍は難しかったと思います。
短期間で取得できる人はPythonにある程度慣れている人や機械学習ないし数学的知識のある方々なのかなと思ったります。
苦戦した理由は以下となります。
- 思った以上にコードを問われる
- 作成したモデルの利用(REST API)など開発寄りの知識も問われた
- パイプランの機能を曖昧に記憶したままでパイプラインに関する問題に迷いが生じた
- 数学的な知識が必要な設問で、想定外の内容もあった
個人的にはかなりしんどく、試験時間が1時間40分あったのですが残り15分まで追い詰められました。
これまでのAzure、AWS試験はだいたい30分以上は余裕をもって終わっていたのですが、今回が一番きつかったです。
要は畑違いの知識の資格を取ろうと思うととても大変だということです。
最難関といわれるAWS Advanced Networkingは正直難しいと思わなかったので、やはり経験がものを言います。
そして、そんな中で合格できた理由としては
- 時間いっぱいMS Learnで調べた
- 過去の試験を思い出したら解ける問題があった
に尽きると思います。
Microsoftの試験は優しいことにMS Learnは見れるのですが、正直今までは自分の知識を試すために使わなかった(カンニングしたくない)のですが今回はフル活用でした。
ただ、それでも細かいライブラリの使い方であったり明らかに設定の経験がないとわからない問題も多く、時間ギリギリまで粘ることになりました。
また、過去の試験で似たような設問があり、その時の経験(あの問題わからなかったなぁと試験後に調べました)で答えられたものもありました。
なので、専門分野の試験を受ける前にAZ-104やAZ-204あたりは取っておいた方が後続の試験がだいぶ楽になると思います。
API系の設問はインフラだけの知識では解けませんし、コンピューティング関連はインフラの知識がないとわからないかと思いました。
と、今回はMS Learn様様な試験となりました。
最後に
DP-100の勉強方法と対策について紹介してきました。
今回の試験は過去に受けた試験の中でも1、2を争う難しさでした。
ネットで調べただけだと簡単そうに見えてくるのですが、コード問題の多さと機械学習という分野の専門性の高さはハードルがあると感じます。
実務でもあまり触れていなかったので非常に理解不足であるということがわかりました。
資格も取ったので本格的に機械学習に取り組んでみようかなと思います。
私のように経験の浅い方はまずはチュートリアルでAzure MLを使ってみることをお勧めします。