NISHIO Hirokazu[Translate]
広聴AIからのサルベージ
2025-03-27
Azure環境の広聴AIに大きなデータを入れたらしばらく実行された後でエラーになってしまった
どういう原因で失敗したのかを調べるためにAzure Container Appの中の中間データを取り出したい

注:
今回は中間データを取り出したいという話で、これは大部分の人には必要ない作業
o3は「o3-mini-highAzureの環境なら、Azure Blob Storageへのアップロードが唯一現実的です」とかいってくる面倒なシチュエーションを無理やりハックするメモです
これをやっている間、管理画面や結果表示画面はもちろんみんな動かなくなる
普通の24時間運用するWebサービスの運用としてはあり得ないことをするのだけど、今回は顧客向けに24時間提供している状況ではないのでやってる

コンテナにbashで入る
:
az containerapp exec \ --name <コンテナアプリ名> \ --resource-group <リソースグループ名> \ --container <コンテナ名> \ --command "/bin/bash"


zipしてport=8001でserveする
$ apt update
$ apt install zip
$ cd broadlistening/pipeline
$ zip -r outputs.zip outputs
$ python -mhttp.server 8001


apiサーバのイングレスの設定を一時的に変える
APIサーバは普通にHTTPSでアクセスすると {"status":"ok"} と返してくる
これはAzureがリクエストを8000番で動いているHTTPサーバに転送している
この設定を一時的に8001番に変える


これでAPIサーバにアクセスした時に先ほど作ったresults.zipが見えて、ダウンロードできるようになる。

ダウンロードし終わったら忘れずに元に戻しておく

余談: 結果を見てみる
通常の成功したレポートは左のようになるが、今回のは右
args.csvにextractionの結果の25000~件5.2MBのデータが出力されている
nasukaさんの推測ではOut of Memoryじゃないかということだったが、多分そうなのだろうという感じ

embeddingでtext-embedding-3-smallを使ってて、1件あたり1536次元のfloat32になる。
それをPythonの list[float] で扱ってる
Pythonのfloatは倍精度float64で8バイトなので合計 = 1536 × 8 = 12,288バイト(約12KB)
25000件ならざっくり300MB
メモリ1GBのコンテナだとアプリケーションが使える余裕がそんなにはないってことなんだろうな
2GBなら余裕なはず
"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]