Azure Machine Learning Studio で突然推論が失敗…サポートに問い合わせたらバグでしたという話
こんにちは!
最近、とあるプロジェクトで 初めて Azure を触る機会に恵まれまして。
「Azureって美味しいの?」状態からスタートし、Azureの波に揉まれながらなんとか浮かんでます🏄♂️💦
そんな中で出会ったのが、Azure Machine Learning(以下 AML)Studio で推論ができない問題。
「設定ミスか?」「コードが悪い?」「色々ググった!でも動かない!」
……と沼にハマり続けた結果、最終的に Microsoft サポートから「それ、バグですね😊」と言われたお話です。
同じようにAMLで奮闘している方のヒントになったり、「Azureってたまにこういうことあるのか〜」と気楽に読んでもらえたら嬉しいです!
結論(急いでる人向け)
オンラインエンドポイントを複数作成し、ポータル上 (UI) で推論テストを数回実行したところ、「モデルをテストできませんでした: Network Error」の表示が出て、推論に失敗する。
→ オンラインエンドポイントを複数作成したときに発生する、Microsoft公式の既知バグでした。
回避策
- UI(ポータル)ではなく、Python SDKやcurlで推論する
- ブラウザをシークレットモードで開くと一時的に改善することも
「UIからの推論が不安定だな」と感じたら、まずは SDK に切り替えてみてください。ポータル上にサンプルコードが載ってます。
ここから経緯
起きた問題:推論が全然通らない
ある日、AMLのオンラインエンドポイントでモデルをデプロイし、ポータル上からテストしてみたところ…
「モデルをテストできませんでした: Network Error」
なんじゃそりゃ?と思って何度かリトライしてみても、やっぱり失敗。
しかも成功するときもあるので、なおさらモヤモヤ…。
状況整理
- AML 上にオンラインエンドポイントを 複数作成
- 各エンドポイントは個別のモデルを持っている
- Azure Portal のUIから推論テストを実行すると、ほとんど失敗
- たまに成功するが、理由がわからない
- 詳細ログも出ず、手詰まり感
ログも取れず、お手上げ状態
試しに Azure Monitor でログを確認しても、これといったエラーが見当たらない。
UIの「Network Error」って、要は「通信失敗」ってことなんだろうけど…
REST API を使っているわけでもないし、こっちはただのクリック操作なのに、何が悪いのかさっぱり。
サポートに聞いてみた
最終的に、Azure のサポートに問い合わせることに(初めてでちょっと緊張)。
(問い合わせの手順は別記事で詳しく書く予定です)
すると数十分で連絡がきて、とても丁寧な返答をいただき、問題の背景が明らかに。
原因は HTTP/2 の接続再利用とブラウザの挙動 でした。
以下、要約です。
サポートからの回答の要点まとめ
- 問題は Azure 側でも 既知のバグ だった(まだ修正はされていない)
- 原因は HTTP/2 による接続の再利用
- 複数のエンドポイントを連続でテストすると、ブラウザが既存の接続を流用しようとする
- しかし AML のバックエンド(MIR)はエンドポイント間での接続再利用をサポートしていない
- 本来なら 421 (Misdirected Request) などを返すべきだが、現在対応中
- その結果、UI上では「Network Error」が出る(でも実際は接続の問題)
噛み砕いてみる
ブラウザは通信を速くするために、すでに開いた接続を別のエンドポイントでも使い回そうとします。
でも、AMLの裏側にあるシステム(MIR)は、
「別のエンドポイントと同じ接続は使わないで!」
という仕様みたい。
つまり、「ブラウザは便利にしようとしているけど、AMLはそれに対応できてない」 というミスマッチが起きている。
本来なら、AML側が「421: Misdirected Request(間違った相手にリクエストされたよ)」みたいなエラーを返すべきなんですが、今はそれが返ってこない状態になっていて、代わりに「Network Error」とだけ出てしまう。
HTTP/2って? (参考)
- Web通信のルール(プロトコル)のバージョンの一つ。
- 同時にたくさん通信できる:1つの接続で複数のリクエストを並行して送受信できる(← HTTP/1.1は基本1個ずつ)。
- 接続を再利用する:同じサーバーへの通信は同じ接続でまとめて使い回すことで速くなる。
- データを圧縮する:ヘッダー(通信のオマケ情報)を圧縮して無駄を省く。
- とにかく速い:全体的にパフォーマンスが改善されていて表示が速くなるよう工夫されてる。
複数のエンドポイントが同じワイルドカード証明書を利用しているため、ブラウザが「同じ接続でいける」と誤認している点が技術的に興味深い点です✏️
回避策は?
サポートから提案された回避策は以下の通り。
- ブラウザ UI を使わず、curl や Python SDK で推論を行う
- (一時的な手段として)ブラウザのキャッシュやセッションを都度クリアする
→ 根本的な解決にはなっていませんが、SDKでの呼び出しは安定して動作しました。
まとめ:UIでのテストが失敗するときは疑え
AML のオンラインエンドポイントで推論がうまくいかないとき、
「モデルが悪い?」「構成ミス?」と焦ってしまいましたが…
ブラウザUIの挙動そのものが問題のこともあるという学びを得ました。
ここまで読んでいただき、ありがとうございました。
おまけ:Azure サポートの対応は神だった
問い合わせから返答までが早く、原因分析・社内調査・回避策提案までしっかり対応してくれました(30分くらいで連絡がきました)。
今後も Azure を使い続ける上で、とても安心感を感じました。

NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion