vLLMを使ってコストゼロで実現するローカルLLMホスティング実装ガイド
Ubuntu環境で LangChain + LLaMA 3.2(仮:Metaからの将来モデル)を使用する前提で、ローカル実行・LangChain連携用のセットアップ例。
目次
vLLMインストール
docker run -itd --rm --runtime nvidia --gpus all \\
-v ~/.cache/huggingface:/root/.cache/huggingface \\
-p 8000:8000 \\
-e MAX_BATCH_SIZE=16 -e BATCH_TIMEOUT_MS=100 \\
vllm/vllm-openai:latest \\
--model Qwen/Qwen2-1.5B-Instruct \\
--tokenizer-mode auto \\
--gpu-memory-utilization 0.8 \\
--max-model-len 16384
✅ 前提
- OS:Ubuntu 20.04 以上(GPUドライバ & CUDA対応済)
- サーバ:GPU H100, メモリ 1TB
- モデル:LLaMA 3.2(想定:HuggingFaceからDL)
- 実行エンジン:vLLM
- LangChainと統合
環境構築
🧱 1. Python・CUDA・ドライバの準備
Python 環境構築(推奨:venv)
sudo apt update
sudo apt install python3-venv python3-pip -y
python3 -m venv llama_env
source llama_env/bin/activate
📦 2. ライブラリのインストール
pip install --upgrade pip
pip install langchain vllm transformers accelerate
オプション(RAG用):
pip install chromadb sentence-transformers
🧠 3. LLaMA 3.2 モデルの取得(仮想の名前として meta-llama/Llama-3.2-70B-Instruct
を使用)
※Metaのモデルは Hugging Face 経由で取得するのが一般的です。 ライセンスの同意後、以下のように
transformers
またはvllm
から読み込みできます。
# モデル取得(仮名)
huggingface-cli login
git lfs install
git clone https://huggingface.co/meta-llama/Llama-4-65B-Instruct
⚙️ 4. vLLMでモデルを起動(OpenAI API互換サーバ)
python3 -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.2-70B-Instruct \
--tensor-parallel-size 8 \
--dtype bfloat16 \
--gpu-memory-utilization 0.9
※
--tensor-parallel-size
はH100の枚数に応じて調整(1枚なら省略可能)
🔌 5. LangChainから接続する(OpenAI互換API)
pythonコピーする編集するfrom langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(
model="meta-llama/Llama-3.2-70B-Instruct",
openai_api_base="http://localhost:8000/v1",
openai_api_key="not-needed" # 任意文字列でOK
)
print(llm.invoke("自己紹介してください"))
🔍 6. LangChain + RAGをやるなら(例)
pythonコピーする編集するfrom langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA
# ベクトルDBとエンベディング
embedding = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectorstore = Chroma(persist_directory="./db", embedding_function=embedding)
# RAG チェーン構築
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
qa.run("社内ドキュメントの保存場所は?")
✅ まとめ:UbuntuでLangChain + LLaMA 3.2 セットアップ構成
コンポーネント | 選定内容 |
---|---|
モデル | meta-llama/Llama-3.2-70B-Instruct (仮) |
実行エンジン | vLLM (OpenAI API互換) |
フレームワーク | LangChain |
ベクトルDB(RAG) | Chroma or FAISS |
Embeddingモデル | sentence-transformers 系 |
チャットボット構築
了解です!H100搭載のUbuntu環境 + LangChain + LLaMA 3.2(想定)+ vLLM を使ったチャットボットの構築例を、以下のような構成でステップバイステップで紹介します。
🎯 目的:
ローカルで動作する高性能チャットボットを構築。
LangChain を活用して会話履歴管理・RAG(検索拡張)なども視野に。
🧱 想定スタック:
項目 | 使用ツール |
---|---|
モデル | meta-llama/Llama-3.2-70B-Instruct (仮) |
モデル実行 | vLLM (OpenAI互換) |
フレームワーク | LangChain |
フロントエンド | Gradio (WebチャットUI) |
言語 | Python(venv推奨) |
🛠️ 手順
✅ 1. vLLMでモデルを起動
bashコピーする編集するpython3 -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.2-70B-Instruct \
--tensor-parallel-size 8 \
--dtype bfloat16 \
--gpu-memory-utilization 0.9
✅ 2. 必要パッケージのインストール
bashコピーする編集するpip install langchain gradio openai
✅ 3. LangChain × Gradio チャットボットコード(例)
pythonコピーする編集するfrom langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationalRetrievalChain
from langchain.prompts import PromptTemplate
import gradio as gr
# LLM設定(OpenAI互換)
llm = ChatOpenAI(
model="meta-llama/Llama-3.2-70B-Instruct",
openai_api_base="http://localhost:8000/v1",
openai_api_key="dummy-key", # 何でもOK
)
# 会話メモリ
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
# プロンプトテンプレート(任意で調整)
prompt = PromptTemplate.from_template("""
あなたは優秀なAIアシスタントです。ユーザーと自然に会話してください。
過去の会話履歴:
{chat_history}
現在のユーザー入力:
{question}
回答:
""")
# チャットチェーン(RAG無し)
from langchain.chains import LLMChain
chat_chain = LLMChain(llm=llm, memory=memory, prompt=prompt)
# Gradio UI
def chat_fn(user_input, history=[]):
response = chat_chain.run(question=user_input)
history.append((user_input, response))
return history, history
with gr.Blocks() as demo:
gr.Markdown("# 💬 LLaMA3.2 チャットボット(ローカル)")
chatbot = gr.Chatbot()
msg = gr.Textbox(placeholder="メッセージを入力...")
state = gr.State([])
msg.submit(chat_fn, [msg, state], [chatbot, state])
demo.launch()
✅ 4. 起動方法
bashコピーする編集するpython chatbot.py
その後、http://localhost:7860
にアクセスすればチャットボットが使えます。