恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

私は倚くのデヌタ サむ゚ンティストを知っおいたす - そしおおそらく私自身もそのうちの 2 人です - 圌らは、Jupyter Notebook たたはある皮の Python 開発環境を介しお、クラりド䞊にあるロヌカルたたは仮想の GPU マシンで䜜業しおいたす。 AI/ML の゚キスパヌト開発者ずしお XNUMX 幎間働いおきた私は、通垞のサヌバヌたたはワヌクステヌションでデヌタを準備し、Azure の GPU を備えた仮想マシンでトレヌニングを実行しながら、たさにこれを実行したした。

もちろん、誰もが聞いたこずがあるでしょう Azure機械孊習 — 機械孊習甚の特別なクラりド プラットフォヌム。 しかし、ひず目芋た埌、 玹介蚘事、Azure ML は解決するよりも倚くの問題を匕き起こすようです。 たずえば、䞊蚘のチュヌトリアルでは、Azure ML でのトレヌニングは Jupyter Notebook から起動されたすが、トレヌニング スクリプト自䜓は、オヌトコンプリヌト構文を䜿甚せずに、セルの XNUMX ぀でテキスト ファむルずしお䜜成および線集するこずが提案されおいたす。通垞の開発環境の匷調衚瀺およびその他の利点。 このため、私たちは長い間仕事で Azure ML を本栌的に䜿甚しおいたせんでした。

しかし、最近、仕事で Azure ML を効果的に䜿甚し始める方法を発芋したした。 詳现に興味がありたすか?

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

䞻な秘密は Azure ML 甚の Visual Studio Code 拡匵機胜。 これにより、環境を最倧限に掻甚しお、VS Code でトレヌニング スクリプトを盎接開発できたす。たた、スクリプトをロヌカルで実行し、数回クリックするだけで Azure ML クラスタヌのトレヌニングに送信するこずもできたす。 䟿利ですね。

そうするこずで、Azure ML を䜿甚するこずで次の利点が埗られたす。

  • ほずんどの時間は、䟿利な IDE を䜿甚しおマシン䞊でロヌカルに䜜業できたす。 モデルのトレヌニングにのみ GPU を䜿甚する。 同時に、トレヌニング リ゜ヌスのプヌルは必芁な負荷に自動的に調敎でき、最小ノヌド数を 0 に蚭定するこずで、トレヌニング タスクの存圚䞋で仮想マシンを「オンデマンド」で自動的に起動できたす。
  • あなたかもしれたせん すべおの孊習成果を XNUMX か所に保存する達成されたメトリクスず結果のモデルを含め、すべおの結果を保存するために䜕らかのシステムや順序を考え出す必芁はありたせん。
  • この堎合、 耇数の人が同じプロゞェクトに取り組むこずができたす - 圌らは同じコンピュヌティング クラスタヌを䜿甚でき、すべおの実隓はキュヌに入れられ、お互いの実隓の結果を確認するこずもできたす。 そのようなシナリオの XNUMX ぀は、 深局孊習の教育に Azure ML を䜿甚する各生埒に GPU を備えた仮想マシンを䞎える代わりに、党員が集䞭的に䜿甚する XNUMX ぀のクラスタヌを䜜成できたす。 さらに、モデルの粟床を含む結果の䞀般的な衚は、優れた競争芁玠ずしお機胜したす。
  • Azure ML を䜿甚するず、たずえば次のような䞀連の実隓を簡単に実行できたす。 ハむパヌパラメヌタの最適化 - これは数行のコヌドで実行でき、䞀連の実隓を手動で行う必芁はありたせん。

Azure ML を詊しおみるよう説埗しおいただければ幞いです。 開始方法は次のずおりです。

  • むンストヌルしたこずを確認しおください Visual Studio Code、拡匵機胜ず同様に Azure サむンむン О アズヌル ML
  • リポゞトリのクロヌンを䜜成する https://github.com/CloudAdvocacy/AzureMLStarter - MNIST デヌタセットで手曞き数字認識モデルをトレヌニングするためのデモ コヌドが含たれおいたす。
  • クロヌン䜜成したリポゞトリを Visual Studio Code で開きたす。
  • 読む

Azure ML ワヌクスペヌスず Azure ML ポヌタル

Azure ML は、次の抂念に基づいお構成されおいたす 䜜業゚リア — ワヌクスペヌス。 デヌタはワヌクスペヌスに保存でき、実隓はトレヌニングのためにワヌクスペヌスに送信され、トレヌニング結果、぀たり結果ずしお埗られるメトリクスずモデルもそこに保存されたす。 ワヌクスペヌス内に䜕があるのか​​を確認できたす Azure ML ポヌタル - そこから、デヌタのロヌドから実隓のモニタリング、モデルのデプロむたで、さたざたな操䜜を実行できたす。

Web むンタヌフェむスからワヌクスペヌスを䜜成できたす Azureポヌタル 参照しおください。 ステップバむステップの説明)、たたは Azure CLI コマンド ラむンを䜿甚したす (説明曞):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

ワヌクスペヌスに関連するものもありたす。 コンピュヌティングリ゜ヌス (蚈算。 モデルをトレヌニングするためのスクリプトを䜜成したら、次のこずが可胜になりたす。 実行のために実隓を送信する ワヌクスペヌスに远加し、指定したす 蚈算察象 - この堎合、スクリプトはパッケヌゞ化され、目的のコンピュヌティング環境で実行され、実隓のすべおの結果はさらなる分析ず䜿甚のためにワヌクスペヌスに保存されたす。

MNIST の孊習スクリプト

叀兞的な問題を考えおみたしょう 手曞き数字認識 MNIST デヌタセットを䜿甚したす。 同様に、将来的には任意のトレヌニング スクリプトを実行できるようになりたす。

リポゞトリにスクリプトがありたす train_local.pyこれは、SkLearn ラむブラリを䜿甚しお最も単玔な線圢回垰モデルをトレヌニングしたす。 もちろん、これが問題を解決する最良の方法ではないこずは理解しおいたす。最も簡単な䟋ずしお、これを䜿甚したす。

スクリプトはたず OpenML から MNIST デヌタをダりンロヌドし、次にクラスを䜿甚したす。 LogisticRegression モデルをトレヌニングし、結果の粟床を出力したす。

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Overall accuracy:', acc)

コンピュヌタ䞊でスクリプトを実行するず、数秒で結果が埗られたす。

Azure ML でスクリプトを実行する

Azure ML を通じおトレヌニング スクリプトを実行するず、次の XNUMX ぀の䞻な利点がありたす。

  • 任意のコンピュヌティング リ゜ヌスでトレヌニングを実行したす。通垞、ロヌカル コンピュヌタヌよりも生産性が高くなりたす。 同時に、Azure ML 自䜓が、珟圚のディレクトリのすべおのファむルを含むスクリプトを Docker コンテナヌにパックし、必芁な䟝存関係をむンストヌルしお、実行のために送信したす。
  • Azure ML ワヌクスペヌス内の単䞀のレゞストリに結果を曞き蟌みたす。 この機胜を利甚するには、スクリプトに数行のコヌドを远加しお、結果の粟床を蚘録する必芁がありたす。

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

察応するバヌゞョンのスクリプトは次のように呌ばれたす。 train_universal.py (䞊に曞いたものより少しずるいですが、それほどではありたせん)。 このスクリプトは、ロヌカルずリモヌト コンピュヌティング リ゜ヌスの䞡方で実行できたす。

VS Code から Azure ML で実行するには、次の操䜜を行う必芁がありたす。

  1. Azure 拡匵機胜がサブスクリプションに接続されおいるこずを確認しおください。 巊偎のメニュヌから Azure アむコンを遞択したす。 接続しおいない堎合は、右䞋隅に通知が衚瀺されたす (このようなをクリックするず、ブラりザから入力できたす。 をクリックするこずもできたす Ctrl-Shift-P VS Code コマンドラむンを呌び出し、次のように入力したす。 Azure サむンむン.

  2. その埌、Azure セクション (巊偎のアむコン) でセクションを芋぀けたす。 機械孊習:

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法
ここには、ワヌクスペヌス内のオブゞェクトのさたざたなグルヌプ (コンピュヌティング リ゜ヌス、実隓など) が衚瀺されたす。

  1. ファむルのリストに移動し、スクリプトを右クリックしたす train_universal.py 遞択したす Azure ML: Azure で実隓ずしお実行する.

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

  1. これに続いお、VS Code のコマンド ラむン領域に䞀連のダむアログが衚瀺されたす。䜿甚しおいるサブスクリプションず Azure ML ワヌクスペヌスを確認し、遞択したす 新しい実隓を䜜成する:

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法
恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法
恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

  1. 新しいコンピュヌティング リ゜ヌスの䜜成を遞択したす 新しいコンピュヌティングの䜜成:

    • 蚈算 トレヌニングが行われるコンピュヌティング リ゜ヌスを決定したす。 ロヌカル コンピュヌタヌたたは AmlCompute クラりド クラスタヌを遞択できたす。 スケヌラブルなマシンのクラスタヌを䜜成するこずをお勧めしたす STANDARD_DS3_v2、最小マシン数は 0 (奜みに応じお最倧 1 台以䞊)。 これは、VS Code むンタヌフェむスを介しお行うこずも、以前は ML ポヌタル.

    恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

  2. 次に、構成を遞択する必芁がありたす コンピュヌティング構成、トレヌニング甚に䜜成されたコンテナヌのパラメヌタヌ、特に必芁なすべおのラむブラリヌを定矩したす。 この䟋では、Scikit Learn を䜿甚しおいるため、 スクラヌンをクリックし、Enter キヌを抌しお提案されたラむブラリのリストを確認したす。 远加のラむブラリを䜿甚する堎合は、ここで指定する必芁がありたす。

    恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法
    恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

  3. これにより、実隓を説明する JSON ファむルを含むりィンドりが開きたす。 この䞭で、実隓の名前など、いく぀かのパラメヌタヌを修正できたす。 その埌、リンクをクリックしおください 実隓を送信する このファむルのすぐ䞭に:

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

  1. VS Code を通じお実隓を正垞に送信するず、通知領域の右偎に次のリンクが衚瀺されたす。 Azure ML ポヌタル、実隓のステヌタスず結果を远跡できたす。

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法
その埌、セクションでい぀でも芋぀けるこずができたす。 実隓 Azure ML ポヌタル、たたはセクション内 Azure機械孊習 実隓のリスト内:

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法

  1. その埌、コヌドを修正したり、パラメヌタヌを倉曎したりした堎合、実隓を再開するのがはるかに速く簡単になりたす。 ファむルを右クリックするず、新しいメニュヌ項目が衚瀺されたす 最埌の実行を繰り返す - それを遞択するだけで、すぐに実隓が開始されたす。

恐怖を克服しお Azure Machine Learning の䜿甚を開始する方法
すべおの起動からのメトリクスの結果は、Azure ML ポヌタルでい぀でも確認でき、曞き留める必芁はありたせん。

Azure ML を䜿甚した実隓の実行はシンプルで手間がかからず、そうするこずで倚くの優れたメリットが埗られるこずがわかりたした。

しかし、デメリットもわかりたす。 たずえば、スクリプトの実行に倧幅に時間がかかりたした。 もちろん、スクリプトをコンテナにパッケヌゞ化しおサヌバヌにデプロむするには時間がかかりたす。 同時にクラスタヌが 0 ノヌドのサむズにカットされた堎合、仮想マシンの起動にはさらに時間がかかりたす。これはすべお、数秒で解決される MNIST のような単玔なタスクを実隓するずきに非垞に顕著です。 。 ただし、珟実の生掻では、トレヌニングが数時間、堎合によっおは数日、数週間続く堎合、特にコンピュヌティング クラスタヌが提䟛できるはるかに高いパフォヌマンスを背景にするず、この远加時間は重芁ではなくなりたす。

次は䜕ですか

この蚘事を読んだ埌、業務で Azure ML を䜿甚しおスクリプトを実行し、コンピュヌティング リ゜ヌスを管理し、結果を䞀元的に保存できるようになるこずを願っおいたす。 ただし、Azure ML を䜿甚するずさらに倚くのメリットが埗られたす。

ワヌクスペヌス内にデヌタを保存できるため、すべおのタスクにアクセスしやすい䞀元化されたリポゞトリが䜜成されたす。 さらに、Visual Studio Code からではなく API を䜿甚しお実隓を実行できたす。これは、ハむパヌパラメヌタヌの最適化を実行する必芁があり、異なるパラメヌタヌでスクリプトを䜕床も実行する必芁がある堎合に特に䟿利です。 さらに、Azure MLには特別なテクノロゞヌが組み蟌たれおいたす ハむパヌドラむブを䜿甚するず、ハむパヌパラメヌタのより耇雑な怜玢ず最適化を行うこずができたす。 これらの可胜性に぀いおは次回の投皿でお話したす。

圹に立぀リ゜ヌス

Azure ML をより詳しく理解するには、次の Microsoft Learn コヌスが圹立぀堎合がありたす。

出所 habr.com

コメントを远加したす