SnowPro Advanced: MLOps Engineer 無料問題 6 / 10 ・ 分野3: Model Serving and Deployment Operations
あるチームが、Snowflake の外で動くモバイルアプリのバックエンドのためにモデルをデプロイする。service_name・service_compute_pool・gpu_requests を付けて create_service を呼び、サービスは動いている。SHOW ENDPOINTS を見ると、呼び出す ingress_url が無い。抜けていたのは何か。
- 公開の HTTP のエンドポイントを作る ingress_enabled=True
- 公開のエンドポイントを用意する image_build_compute_pool
- 公開の URL には2つのノードが要るので、1より大きい max_instances
- 呼び出す側のためにポート5000でエンドポイントを開く num_workers
正解と解説を見る
正解: A
正解の理由
「Deploy a model for online inference」の節では、create_service は service_name・service_compute_pool・ingress_enabled を受け取り、Snowflake の外からオンライン推論を呼ぶには ingress_enabled を True にする必要がある。「HTTP endpoints」の節は、どのサービスにも内部の DNS の名前があり、ingress_enabled でデプロイすると Snowflake の外から使える公開の HTTP のエンドポイントも作られ、SHOW ENDPOINTS の ingress_url の列に出ると付け加えている。このサービスは ingress 無しで作られたので、Snowflake の中からしか呼べない。公開のエンドポイントを作るには、ロールにアカウントの BIND SERVICE ENDPOINT の権限も要る。
違う選択肢
「公開のエンドポイントを用意する image_build_compute_pool」… image_build_compute_pool を使うと、モデルを動かすプールより非力なプールでコンテナのイメージを作れる。費用に効くもので、サービスに届けるかどうかには効かない。
「公開の URL には2つのノードが要るので、1より大きい max_instances」… スケーリングの設定は、いくつのインスタンスが動くかを決める。ページは公開のエンドポイントを create_service の1つの引数に結び付けており、インスタンスの数には結び付けていない。
「呼び出す側のためにポート5000でエンドポイントを開く num_workers」… num_workers は、サーバーの中のワーカーのプロセスの数を決める。エンドポイントは必ず inference という名前でポート5000を使い、どの引数でも変えられない。
公開のエンドポイントは作るときの ingress で決まる
Snowflake の中では、呼び出す側は内部の DNS の名前とポートを使える。Snowflake の外のアプリには ingress の URL が要り、それはサービスのエンドポイントを結び付けることを許されたロールが ingress_enabled=True でサービスを作った場合にだけある。