AI 用サーバレス・プラットフォーム Modal のガイドから、CPU とメモリの予約についての説明をまとめてみました。
Modal ガイド : GPU と他のリソース : CPU とメモリの予約
作成 : クラスキャット・セールスインフォメーション
作成日時 : 03/16/2025
* 本記事は modal.com/docs の以下のページを独自に翻訳した上でまとめ直し、補足説明を加えています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
Modal ガイド : GPU と他のリソース : CPU とメモリの予約
各 Modal コンテナは 0.125 CPU コアと 128 MiB のメモリをデフォルトの予約として持ちます。コンテナは、ワーカーが利用可能な CPU やメモリを持つ場合、この最小値を超えることができます。またより高い予約をリクエストすることでより多くのリソースへのアクセスを保証することもできます。
CPU コア
より多くのコア数で実行する必要があるコードがあるならば、cpu 引数を使用してそれをリクエストできます。これは CPU コアの浮動小数点数を指定できます :
import modal
app = modal.App()
@app.function(cpu=8.0)
def my_function():
# code here will have access to at least 8.0 cores
...
メモリ
より多くの保証されたメモリを必要とするコードがある場合、memory 引数を使用してそれをリクエストできます。これはメガバイトの整数値を想定しています :
import modal
app = modal.App()
@app.function(memory=32768)
def my_function():
# code here will have access to at least 32 GiB of RAM
...
How much can I request?
CPU とメモリの両方について、アプリケーションの実行がスケジュールできることを確実にするために関数作成時に最大値が強制されます。最大値を超えるリクエストは InvalidError で拒否されます。
プラットフォームの成長ととともに、より多くの CPU とメモリ予約をサポートする予定です。
Billing (課金)
CPU とメモリについて、予約か実際の使用量のどちらか高い方に基づいて課金されます。
ディスクのリクエストは 20:1 の比率でメモリリクエストを増加させることにより課金されます。例えば、500 GiB のディスクのリクエストは、メモリリクエストを (まだ高く設定されていない場合は) 25 GiB に増加させます。
リソース制限
CPU 制限
Modal コンテナはデフォルトのソフト CPU 制限があります、これは CPU リクエストより 4 物理コア多く設定されています。デフォルト CPU リクエストが 0.125 コアである場合、デフォルトのソフト CPU 制限は 4.125 コアになります。この制限を超えると、ホストはコンテナの CPU 使用量を制限し始めます。
代わりに CPU 制限を明示的に設定することもできます。
cpu_request = 1.0
cpu_limit = 4.0
@app.function(cpu=(cpu_request, cpu_limit))
def f():
...
メモリ制限
Modal コンテナはハード・メモリ制限を持つことができます、これは制限を超えようとするコンテナを ‘Out of Memory’ で強制終了させます。この機能は、コンテナが深刻なメモリリークを持つ場合に有用です。制限を設定して、コンテナを強制終了して、リークした GB メモリの支払いを回避することが可能です。
mem_request = 1024
mem_limit = 2048
@app.function(
memory=(mem_request, mem_limit),
)
def f():
...
Specify this limit using the memory parameter on Modal Functions.
ディスク制限
Modal コンテナの実行は多くの GB の SSD ディスクへのアクセスを持ちますが、書き込みの総量は以下で制限されます :
- 基盤となるワーカーの SSD ディスク容量のサイズ
- 数百 GB 単位で設定されるコンテナ毎のディスククォータ。
いずれかの制限に引っかかるとコンテナのディスク書き込みが拒否されることになります、これは通常は OSError として現れます。
ephemeral_disk パラメータ でディスクサイズの増加がリクエストできます。The maximum disk size is 3.0 TiB (3,145,728 MiB). Larger disks are intended to be used for dataset processing.
以上