背景
Snowflake Cortex では、Complete 関数と呼ばれる LLM の応答を簡単に得られる SQL 関数が存在します。
select snowflake.cortex.complete('mistral-large2', 'こんにちは');
応答例は次のようになります。
こんにちは!なにかお手伝いできることはありますか?
この関数は、Snowflake がデプロイされている様々なリージョン(アメリカ、東京など)で使用できます。
しかし、上記リンクからも分かるように、すべてのモデルが各リージョン、例えば東京リージョンで使える訳ではありません。例えば、Snowflake が開発した snowflake-arctic
モデルは現時点では、AWS オレゴンリージョンでしか使うことができません。
解決策
そこで Snowflake は、クロスリージョン推論 という機能を提供しています。この機能では、推論呼び出しを現在のリージョンとは異なるリージョンで処理できるように構成できます。
設定方法は、ACCOUNTADMIN
ロールで下記のコマンドを実行するだけです。
// AWS US リージョンに設定
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'AWS_US';
// すべてのリージョンに設定
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'ANY_REGION';
// 複数のリージョンに設定
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'AWS_US,AWS_EU';
本オプションはアカウント全体に影響するため、各環境におけるセキュリティ要件に注意して設定するようにしましょう。
試してみる
AWS Tokyo リージョンで構成された Snowflake トライアルアカウントで実際に確認してみます。
まずは、AWS オレゴンリージョンでしか使えない snowflake-arctic
を呼び出してみます。
USE ROLE ACCOUNTADMIN;
SELECT snowflake.cortex.complete('snowflake-arctic', 'こんにちは');
すると当然ですが、下記のようにモデルが見つからない旨のエラーが生じます。
100351 (P0000): Request failed for external function COMPLETE$V2 with remote service error: 400 '"unknown model \"snowflake-arctic\""
次に、クロスリージョン推論を AWS US
に設定した上で同じように snowflake-arctic
を呼び出してみます。
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'AWS_US';
SELECT snowflake.cortex.complete('snowflake-arctic', 'こんにちは');
すると、下記のように適切に応答が返ってきたことが分かりました。
こんにちは!今日はどのようにお手伝いできますか?
個人的にとても驚いたのが、設定時間やレスポンス時間がほぼなかったことです。どちらも数秒の内に完了してしまいました。
また、念の為、下記のコマンドでデフォルト設定であるクロスリージョン推論の無効化を行っておきましょう。
USE ROLE ACCOUNTADMIN;
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'DISABLED';
終わりに
そもそもクロスリージョン推論という機能があることを知らなかった方、クロスリージョン推論という機能があることは知っていたけれどどのように設定するか知らなかった方、そうは言っても設定に時間かかるんでしょ?と考えていた方、などに参考になりましたら幸いです。
ぜひ頭の片隅に入れておきましょう。もちろんセキュリティの観点もお忘れなく。
楽しい Snowflake LLM ライフを!🏄️