Elastic Algorithm Service (EAS) では、サービス実行中に動的パラメータを設定できます。この変更はサービス再起動なしに即座に反映されるため、レート制限の構成調整やモデルパラメータのチューニングに最適です。
概要
動的パラメータにより、EAS でランタイム中の構成が可能になり、サービス実行中にパラメータ設定を変更できます。これらの変更はサービス再起動を必要とせず、即座に有効になります。
環境変数との違い:
環境変数:サービス起動時に注入されます。変更を反映するにはサービスの再起動が必要です。
動的パラメータ:ランタイム中に変更可能です。変更はサービス再起動なしに即座に有効になります。
主なメリット:
構成変更がリアルタイムで反映され、すべてのコンテナインスタンス間で同期されます。
サービスの可用性に影響を与えず、再起動によるサービス中断を回避できます。
レート制限のしきい値やモデルパラメータなど、頻繁に調整が必要な設定に最適です。
ユースケース
動的パラメータは、以下のシナリオに適しています:
レート制限構成の動的調整:ビジネストラフィックに基づき、
rate_limitなどのレート制限パラメータをリアルタイムで調整します。モデル推論パラメータのリアルタイム変更:
temperature、top_p、およびmax_tokensなどのモデルパラメータを調整します。ログレベルの調整:トラブルシューティングのために一時的にログ出力レベルを変更します。
カナリアリリースにおける機能フラグの制御:動的パラメータを使用して新機能を有効化または無効化します。
A/B テストの構成:異なる構成を迅速に切り替えて、そのパフォーマンスを比較します。
前提条件
動的パラメータを使用するには、サービス構成で動的構成を有効にする必要があります。サービス構成 JSON の最上位レベルに features フィールドを追加してください:
{
"name": "your-service-name",
...other configurations,
"features": {
"eas.aliyun.com/enable-properties": "true"
}
}例外: LLM ベースのインテリジェントルーティングを使用しているサービスの場合、動的構成はデフォルトで有効になっています。手動での構成は不要です。
操作手順
ステップ 1:動的パラメータの設定
動的パラメータの更新方法は次の 2 通りあります:
動的パラメータセクションでの更新(推奨):サービスの 概要 ページにある 動的パラメータ セクションでパラメータを変更します。この方法ではサービス再起動がトリガーされず、変更がリアルタイムで反映されます。
サービス構成の更新(非推奨):サービス構成 JSON 内の
propertiesフィールドを直接変更します。この方法ではサービス更新がトリガーされます。
以下は推奨方法の手順です:
Inference Service タブで、対象サービスの名前をクリックし、Overview ページを開きます。
Environment Information セクションで、動的パラメータ にパラメータを追加または変更します。次のいずれかの方法でパラメータを追加できます:
Table View:パラメータ名と値を 1 行ずつ追加します。
JSON View:JSON 形式で一括してパラメータを追加します。
Submit をクリックして構成を保存します。
ステップ 2:構成の確認
構成を保存すると、システムは各コンテナインスタンス上の設定ファイルに素早くパラメータを同期します。
設定ファイルのパスは /eas/workspace/properties/service.json です。
アプリケーションコード内でこの設定ファイルを読み取ることで、動的パラメータを使用できます。
使用例
以下の例では、レート制限パラメータを設定し、アプリケーションコードで読み取る方法を示します。
レート制限パラメータの設定:
{
"properties": {
"rate_limit": 100,
"max_concurrent_requests": 50,
"timeout_seconds": 30
}
}アプリケーションでの動的パラメータの読み取り(Python):
import json
# 動的パラメータを読み込みます。
def load_properties():
try:
with open('/eas/workspace/properties/service.json', 'r') as f:
properties = json.load(f)
return properties
except Exception as e:
print(f"プロパティの読み込みに失敗しました: {e}")
return {}
# 動的パラメータを使用します。
properties = load_properties()
rate_limit = properties.get('rate_limit', 100)
max_concurrent = properties.get('max_concurrent_requests', 50)
print(f"レート制限: {rate_limit}")
print(f"最大同時リクエスト数: {max_concurrent}")よくある質問
Q:パラメータ変更はいつ有効になりますか?
動的パラメータを変更すると、変更内容は各コンテナインスタンス上の設定ファイルに素早く同期されます。ただし、最新の構成を適用するには、アプリケーション側でファイル監視や定期的なポーリングなどの構成ホットリロード機構を実装する必要があります。
Q:構成ホットリロードを実装するにはどうすればよいですか?
構成ホットリロードの実装には、以下の方法を推奨します:
ファイル監視:Python の watchdog ライブラリなどのファイルシステムウォッチャーを使用して、設定ファイルの変更を監視し、更新時に自動的に構成を再読み込みします。
定期ポーリング:たとえば 5 秒ごとに設定ファイルを定期的に読み取り、内容に変更があったかどうかを確認して、メモリ上の構成を適宜更新します。
Q:シークレット情報に動的パラメータを使用できますか?
機密情報を動的パラメータに格納することは強く推奨されません。API キーやデータベースパスワードなどのシークレット情報は、セキュリティを強化するために、環境変数または Alibaba Cloud KMS などの専用シークレット管理サービスで管理してください。