NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

Azure Machine Learning Sample Bug

こんにちは、上坂です。
そういえばなぜかAzure Machine Learningについてまったく記事を書いていなかったのでぼちぼち書いていこうと思います。

2015年3月にAzure Machine Learningはトレーニングしたモデルを別のデータを使って再トレーニングできるAPIを公開しました。
公式の説明はこちらです。

プログラムによる Machine Learning のモデルの再トレーニング

このドキュメントに従って設定していけば、再トレーニングまでのバッチ処理の流れは理解できると思います。手順7にて、追加のエンドポイントに公開されるトレーニング済みモデル更新用のAPIを叩くところの解説があるのですが、ドキュメントではここでいきなりC#のコードの画像(!)が出てきます。

 

f:id:nextscape_blog:20210909234127p:plain


 

このC#コードの画像から写経して実装するのは勝手が悪いので、ほとんどの方は管理ポータルで追加したエンドポイントを開くと表示される、「リソースの更新」というリンクをクリックして、そこに記載されたサンプルコードを利用されているかと思います。

 

f:id:nextscape_blog:20210909234208p:plain


でも、このサンプルコード、一か所間違えているんです。

場所はここ、RESTで更新リクエストを投げるときのBODYのサンプルです。

f:id:nextscape_blog:20210909234231p:plain


ここでは

"Id" : = "MyExperiment [trained model]",

となっていますが、このまま使用するとそんなリソースはない、というメッセージとともにInvalidResourceというエラーが帰ってきてしまいます。

正解は

"Name" : "MyExperiment [trained model]",

です。トレーニング済みのExperimentの指定は名前で行ってください。
Idでもできるんじゃないかと思ってExpermentのResourceIdをどうにかして取得できないかとPowerShell叩いて調べてみましたが、現段階では取得できないようです。

ちなみに、C#のコードサンプルはちゃんと"Name"としてリクエストを投げてくれますので問題なく動作しますのでご安心を。今回はFiddlerで確認していて、たまたま気付きました。RESTで実装される方は気を付けてください。