6
8

More than 1 year has passed since last update.

格安・簡単にCPU, GPUリソースを使えると噂のModalを触ってみる

Last updated at Posted at 2023-03-02

はじめに

巷で話題の画像生成を自分の手元で実行したいけどGPUリソースがなくてあきらめている..
GPUリソースをクラウドで使いたいけど、クラウドの設定難しそうだし、高い、もっと簡単に安く使いたい...
そんな人(私自身)でも格安・簡単にGPUリソース(CPUも)使えるModalを触ってみようと思います。

2023/03/05現在、modalはプライベートベータ版でサインアップすることでベータテストの招待が受けられます。

Modalってなに?

Your end-to-end stack for cloud compute
Modal lets you run or deploy machine learning models, massively parallel compute jobs, task queues, web apps, and much more, without your own infrastructure.

Cloud power, local productivity
Modal lets you run your code in the cloud within seconds. No need to install Docker, set up Kubernetes clusters, or even have an AWS account.

Python向けのクラウドコンピューティングサービスの一種で
並列処理やwebアプリ、機械学習モデルなどが自分たちで特別なインフラを用意しなくても実行・デプロイできます。

また、クラウドコンピューティングと書いてはいますが、AWSの登録や個別にDockerなどを準備する必要がなく、そのうえ自身のコードを数秒でクラウド上で実行できるため手軽にリソースを使いたい人にはもってこいのサービスです。

そして、クラウドと聞いて気になるのがお値段ですが、以下のようになっています。
安いですね!(当社比) しかも、かかるのは使った時間だけなので、使い方によってはパパっと使ってお目当てのもののために使えば、すごく安く抑えられると思います。

また、個人利用の場合毎月10$のクレジットがついてくるようなので、巷で噂の画像生成なら無料の範囲で何回も使えそうですね!

簡単に紹介しましたが、本当に使いやすいのかはこれだけではわからないと思うので使っていこうと思います。

つかってみる

前準備

使うためにまずサインアップをします。サインアップはgithubのアカウントで行います。
サインアップが終わると、Tokenが発行されるようになるのですが実際に使用できるまでは1日ほど待たなければいけないようです。
Tokenの発行準備が整うとメールが届くのでそれまでのんびり待ちましょう。

チュートリアル

Token発行準備完了後ログインすると以下のような画面に行けるようになります。
早速チュートリアルをやっていきましょう。
image.png

Download and configure the Python client

image.png
以下のコードを実行していきます。

pip install modal-client
modal token new

自分の環境ではmodal token newを実行するとURLが表示されたので開くとToken発行画面が開き無事Tokenを発行できました。
準備としてはたったこれだけで完了のようです。簡単ですね!

Run some code

image.png
こちらも指示通りに、やっていきます。

こちらのプログラムは42の2乗を行うスクリプトみたいです。

import modal

stub = modal.Stub("example-get-started")


@stub.function
def square(x):
    print("This code is running on a remote worker!")
    return x**2


@stub.local_entrypoint
def main():
    print("the square is", square.call(42))

上記プログラムをファイルに書き出しておきましょう。

このプログラムで注目するべきは4か所です。
まずはimport modalです。
これは、modalを使うためにパッケージをインポートしています。

次にstub = modal.Stub("example-get-started")です。
ここではmodalのリソースに名前を付けてmodalのクラウドリソースを使う準備を整えます。
referenceを読んでみるともっと、詳しく書かれていますが、ここでは簡単に自身のコードが終わるまでに使うmodalのクラウド資源の確保のための処理としておきます。

次に@stub.functionのデコレータです。
このデコレータが付与された関数はmodalのクラウドリソース上で実行されることとなります。

最後に@stub.local_entrypointです。
これを付けたものが自分のローカル環境で初めに実行されるものとなります。

以上の4つを自身のコードに書き込めばローカルでクラウド資源を使用する準備は完了です。
簡単ですね!

では、最後に実行しましょう

modal run get_started.py

そうすると以下のようなログが出てきて実行がされます。

$ modal run get_started.py
✓ Initialized. View app at https://modal.com/apps/hogehoge
✓ Created objects.
├── 🔨 Created square.
└── 🔨 Created mount 
/hogehoge/get_started.py
This code is running on a remote worker!
the square is 1764
✓ App completed.

ちなみに、実行中にmodalにログインしてブラウザを見ていると紙吹雪が舞います。粋な?演出ですね!

ここまでが簡単に使用する方法みたいです。どうでしょうか?手軽に使えそうではないでしょうか?

GPUも簡単に使えるのか

先ほどまでの例はCPUを利用している例でした。
では、GPUの場合はどうするのかですが、
modalでは、以下の例のようにGPUを使用する関数にデコレータ
@stub.functionを付けたうえで、引数gpuに使用したいリソースの文字列を与えるだけで使えるようです。

@stub.function(gpu="T4")
def my_t4_function():
    ...

@stub.function(gpu="A10G")
def my_a10g_function():
    ...

2023/03/05現在使用できるGPUは"T4", "A10G"の2種類です。これは Nvidia Tesla T4 or A10Gのことを指しており、
GPUの性能はそれに準じているようです。
そのほか使い方詳細は公式ガイドに乗っているので、気になる人は見てみてください。

終わりに

本記事ではGPUを実際に使った様子を載せませんでしたが、
公式ガイドには、Stable diffisionで画像を生成深層学習のモデル訓練, Blenderを使った3Dレンダリングなど様々な例があるため、すごく丁寧で使い始めやすい印象を受けました。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8