見出し画像

[ローコスト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での支払いの手順は下記の通りです。

  • アカウント作成

  • クレジットカード登録

  • カードでデポジットに入金

  • サービスの利用料金はデポジットから減額される

「注意ポイント」
Cloud Inferenceは月10ドルまでの定額ですが、1か月後に減算されるのではなく、申し込んだ時点で10ドルがデポジットから減額されます。
申し込んだら1か月の間で5000万トークンに行くまで使い切りましょう。

利用できるモデル

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

こんにちは!私はAIです。自己紹介をします。私は、会話を理解し、応答することができます。質問に答え、情報を提供することができます。また、文章の生成や翻訳など、テキストに関するタスクも行うことができます。私は、24時間365日、いつでも会話を始めることができます。どうぞ、気軽に話しかけてください!

  • qwen2.5-32b-instruct

こんにちは!私はQwenと申します。アリババクラウドによって作成された大規模な言語モデルです。質問に答えたり、文章を作成したり、会話をすることができます。どんなことでもお気軽にお尋ねください。どのようにお手伝いできるか楽しみにしています!

まとめ

Vulte Cloud Inferenceは比較的低コストでオープン系LLMが利用できる良いサービスだと思います。
Vultrは仮想サーバーもリーズナブルな価格で利用できるのでおススメですよ。
(広告ではありませんw)