vLLM
ollama がローカルで動かしやすいラッパーだとすれば vLLM はサーブしやすくするためのもの Docker Image
公式のやつ、OpenAI API Compatible なサーバーを立てるもの、2024/9/17 のところ他はない
参考 Dockerfile
code:Dockerfile
FROM vllm/vllm-openai:latest
ENV HF_HOME=/model-cache
RUN --mount=type=secret,id=HF_TOKEN HF_TOKEN=$(cat /run/secrets/HF_TOKEN) \
huggingface-cli download google/gemma-2-2b-it
ENV HF_HUB_OFFLINE=1
ENTRYPOINT python3 -m vllm.entrypoints.openai.api_server \
--port ${PORT:-8000} \
--model ${MODEL_NAME:-google/gemma-2-2b-it} \
${MAX_MODEL_LEN:+--max-model-len "$MAX_MODEL_LEN"}
(この手順の SECRET_TOKEN 環境変数に渡してるの意味なくね?)
generate
llm.generate の返り値は list[RequestOutput]
RequestOutputs#outputs は list[CompletionOutput]、これに .text とかが生えている
CompletionOutput は dataclass
multimodal_data
code:multimodal.py
llm.generate({
"prompt": prompt,
"multi_modal_data": {
"image": image # PII.Image.Image インスタンス
},
})
OpenAI 互換サーバーでどう渡す? url 渡して fetch してくれる?