[ローコストLLM] Vultr Cloud Inferenceを使ってみた
Vultrとは
Vultr(バルチャー)はクラウドサーバーを低価格で提供している企業です。
Vultrで提供されている仮想サーバは価格がお手頃で、日本リージョンもあるのでよく活用しています。
[Vultr]
https://www.vultr.com/
Vultr Cloud Inferenceとは
Vultr Cloud Inferenceは、オープン系のLLMを利用できるサービスです。
サーバーの構築やモデルのデプロイは不要で、APIキーを発行すればすぐに利用することができます。
なんと月額10ドルで5000万トークンまでは固定料金。それ以上の利用時は従量課金ですが、それでも0.2ドル/1Mトークン。安い!
OpenAIのライブラリと互換性があるので、使い慣れたOpenAI SDKがそのまま利用できます。
Vultrでの支払い方法
Vultrでの支払いの手順は下記の通りです。
アカウント作成
クレジットカード登録
カードでデポジットに入金
サービスの利用料金はデポジットから減額される
利用できるモデル
2024/12/23時点での利用可能モデルは下記の通りです。
llama-3.3とQwen2.5が使えるのがうれしいですね。
llama-3.1-70b-instruct-fp8
llama-3.3-70b-instruct
mistral-7b-v0.3
qwen2.5-32b-instruct
qwen2.5-coder-32b-instruct
OpenAI Python SDK経由でアクセスしてみる
まずはパッケージをインストールしましょう。
pip install openai python-dotenv
Pythonのコードは下記の通りです。
import os
from typing import AsyncGenerator
from dotenv import load_dotenv
from openai import AsyncOpenAI, AsyncStream
from openai.types.chat import ChatCompletionChunk
load_dotenv(override=True)
VULTR_INFERENCE_API_KEY = os.getenv("VULTR_INFERENCE_API_KEY", "")
if not VULTR_INFERENCE_API_KEY:
raise ValueError("No API key provided")
MODEL = os.getenv("VULTR_INFERENCE_MODEL", "")
if not MODEL:
raise ValueError("No model provided")
client = AsyncOpenAI(
api_key=VULTR_INFERENCE_API_KEY, base_url="https://api.vultrinference.com/v1"
)
async def chat(prompt: str) -> AsyncGenerator[str, None]:
print(f"model: {MODEL}")
response: AsyncStream[ChatCompletionChunk] = await client.chat.completions.create(
model=MODEL,
temperature=0.0,
max_tokens=8192,
messages=[{"role": "user", "content": prompt}],
stream=True,
)
async def chat_generator(
response: AsyncStream[ChatCompletionChunk],
) -> AsyncGenerator[str, None]:
async for chunk in response:
if (
chunk
and chunk.choices
and chunk.choices[0].delta
and chunk.choices[0].delta.content
):
yield chunk.choices[0].delta.content
return chat_generator(response)
async def main():
print("Models:")
models = await client.models.list()
for model in models.data:
print(model.id)
print()
response = await chat("こんにちは!自己紹介してください")
async for chunk_text in response:
print(chunk_text, end="", flush=True)
print()
if __name__ == "__main__":
import asyncio
asyncio.run(main())
.env には下記のように、API Keyとモデル名を指定します。
VULTR_INFERENCE_API_KEY=<VULTR Serverless InferenceのAPIキー>
VULTR_INFERENCE_MODEL=<モデル名>
実行結果
llama-3.3-70b-instruct
qwen2.5-32b-instruct
まとめ
Vulte Cloud Inferenceは比較的低コストでオープン系LLMが利用できる良いサービスだと思います。
Vultrは仮想サーバーもリーズナブルな価格で利用できるのでおススメですよ。
(広告ではありませんw)