「Google Colab」で「vLLM」を試したので、まとめました。
1. vLLM
「vLLM」は、LLMの高速推論のためのライブラリです。
「vLLM」には柔軟性があり、次の用途に対応しています。
2. サポートモデル
「vLLM」は、次のモデルを含む多くのHuggingFaceモデルをシームレスにサポートします。
3. Colabでの実行
Colabでの実行手順は、次のとおりです。
(1) Colabのノートブックを開き、メニュー「編集 → ノートブックの設定」で「GPU」の「A100」を選択。
(2) パッケージのインストール。
!pip install vllm
(3) LLMの準備。
今回は、「elyza/ELYZA-japanese-Llama-2-13b-instruct」を使います。
from vllm import LLM
llm = LLM(model="elyza/ELYZA-japanese-Llama-2-13b-instruct")
(4) プロンプトテンプレートの準備。
import string
template = string.Template("""<s>[INST] <<SYS>>
あなたは誠実で優秀な日本人のアシスタントです。
<</SYS>>
${instruct} [/INST] """)
(5) 推論の実行。
%%time
from vllm import SamplingParams
prompts = [
"まどか☆マギカでは誰が一番かわいい?",
]
for i in range(len(prompts)):
prompts[i] = template.safe_substitute({"instruct": prompts[i]})
outputs = llm.generate(
prompts,
sampling_params = SamplingParams(
temperature=0.5,
max_tokens=256,
)
)
for output in outputs:
print("Prompt:", output.prompt, "\n")
print("Response:", output.outputs[0].text, "\n----\n")
VRAM使用量は、次のとおりです。
「SamplingParams」のパラメータは、次のとおりです。
(5) 3つのプロンプトの推論の実行。
プロンプトを3つに増やしても、処理時間は3倍にはならないことを確認します。
%%time
from vllm import SamplingParams
prompts = [
"まどか☆マギカでは誰が一番かわいい?",
"自然言語処理とは?",
"Pythonでtest.txtを読み込むコードは?",
]
for i in range(len(prompts)):
prompts[i] = template.safe_substitute({"instruct": prompts[i]})
outputs = llm.generate(
prompts,
sampling_params = SamplingParams(
temperature=0.5,
max_tokens=256,
)
)
for output in outputs:
print("Prompt:", output.prompt, "\n")
print("Response:", output.outputs[0].text, "\n----\n")