Zenn
😇

Azure Machine Learning Studio で突然推論が失敗…サポートに問い合わせたらバグでしたという話

2025/03/31に公開

こんにちは!

最近、とあるプロジェクトで 初めて 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エンジニアブログ

Discussion

ログインするとコメントできます