vLLMの使い方!LLMをローカルで高速に動かす

vLLMの使い方!LLMのテキスト生成を高速に

vLLMはローカル環境でLLMが使える無料のライブラリです。

vLLMを使えば、LLMによるテキスト生成を高速に行えるようになります。

この記事では、vLLMの環境構築からモデルを使ったテキスト生成の方法まで紹介します。

11/27開催のウェビナーをお知らせ!

目次

vLLMとは

見出し画像

vLLMはローカル環境でLLMが使える無料のライブラリです。

vLLMを使うことで、LLMによるテキスト生成を高速に行えるようになります。

vLLMではHuggingFaceで提供されているモデルを使うことができ、量子化モデルもサポートしています。

vLLMの実行環境

見出し画像

LLMのモデルを使う際に、GPUが必要になります。

この記事では、次のようなGPUを搭載した環境を用意しています。

  • GPU:NVIDIA A100
  • GPUメモリ(VRAM:80GB)
  • OS:Ubuntu 22.04LTS

Windowsをお使いの方は、Ubuntuをインストールする記事をご覧ください。

vLLMの環境構築

見出し画像

この記事では、Dockerコンテナを使ってvLLMの環境を構築します。

Dockerのインストール方法は以下の記事をご覧ください。

STEP
Dockerfileの作成

CUDA、Python、vllmをインストールするDockerfileを作成します。

パッケージ一覧
  • CUDA:12.1
  • Python:3.10
  • vLLM
  • JupyterLab

Ubuntuのコマンドラインで、Dockerfileを作成します。

mkdir vllm
cd vllm
nano Dockerfile

Dockerfileに以下の記述を貼り付けます。

# ベースイメージ(CUDA)の指定
FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y python3-pip python3-venv git nano

# 作業ディレクトリを設定
WORKDIR /app

# アプリケーションコードをコピー
COPY . /app

# Python仮想環境の作成
RUN python3 -m venv /app/.venv

# 仮想環境をアクティベートするコマンドを.bashrcに追加
RUN echo "source /app/.venv/bin/activate" >> /root/.bashrc

# JupyterLabのインストール
RUN /app/.venv/bin/pip install Jupyter jupyterlab

# vllmのインストール
RUN /app/.venv/bin/pip install vllm

# コンテナの起動時にbashを実行
CMD ["/bin/bash"]

[Ctrl + S]キーで変更内容を保存し、[Ctrl + X]キーで編集モードから抜けます。

STEP
docker-compose.ymlファイルの作成

Dockerの設定をするためのdocker-compose.ymlを作成します。

nano docker-compose.yml

開いたdocker-compose.ymlファイルに以下の記述をコピーして貼りつけます。

services:
  vllm:
    build:
      context: .
      dockerfile: Dockerfile
    image: vllm
    runtime: nvidia
    container_name: vllm
    ports:
      - "8888:8888"
    volumes:
      - .:/app/vllm
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    command: >
      bash -c '/app/.venv/bin/jupyter lab --ip="*" --port=8888 --NotebookApp.token="" --NotebookApp.password="" --no-browser --allow-root'

[Ctrl + S]キーで変更内容を保存し、[Ctrl + X]キーで編集モードから抜けます。

STEP
コンテナの起動

docker-compose.ymlの記述をもとに、Dockerコンテナを構築して起動します。    

docker compose up

コンテナが起動したら、ローカルPCの「ブラウザの検索窓」に以下のURLを入力し、Enterを押すとJupyterLabの画面が表示されます。

http://localhost:8888/

この記事では、ローカルポート8888を使用してJupyterLabを起動しています。

vLLMの実装

見出し画像

Dockerコンテナで起動したJupyter Lab上で、vLLMの実装をします。

STEP
ライブラリのインポート

Jupyter Labのコードセルに次のコマンドを実行して、ライブラリをインポートします。

from vllm import LLM, SamplingParams
STEP
モデルとトークナイザーの設定

モデルとトークナイザーを読み込みます。

llm = LLM(
    model="elyza/Llama-3-ELYZA-JP-8B-AWQ",
    quantization="awq"
)
tokenizer = llm.get_tokenizer()
コードの説明

model=”elyza/Llama-3-ELYZA-JP-8B-AWQ”

モデルのタイプを指定しています。vLLMではHuggingFaceのモデルが利用できます。

quantization=”awq”

量子化の方式を指定しています。

llm.get_tokenizer()

トークナイザーを読み込みます。

モデルを読み込む際にGPUメモリを消費しますので、余裕を持ったGPUメモリをご用意ください。

vLLMでテキスト生成

見出し画像

vLLMを使って、日本語での質問応答を試してみます。

日本語での質問応答

「石川県のご当地グルメを教えて下さい。」というプロンプトを日本語で実行してみます。

DEFAULT_SYSTEM_PROMPT = "あなたは日本人のアシスタントです。"
text = "石川県のご当地グルメを教えて下さい。"

messages = [
    {"role": "system", "content": DEFAULT_SYSTEM_PROMPT},
    {"role": "user", "content": text},
]

prompt = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)

sampling_params = SamplingParams(
    temperature=0.6,
    top_p=0.9,
    max_tokens=1000
)

outputs = llm.generate(prompt, sampling_params)

print(output.outputs[0].text)

石川県のご当地グルメを教えて下さい。

石川県のご当地グルメは、海の幸を活かした美味しいものが多いです。以下は、代表的な石川県のご当地グルメです。

1. 加賀屋のカレー: 加賀屋は金沢市の老舗のカレー店で、カレーを石川県のご当地グルメとして提唱しています。独特のスパイスのブレンドと、サフランライスが特徴です。

2. 金沢カレー: 金沢カレーは、金沢市のカレー店が発祥で、石川県のご当地カレーとして知られています。ルーは茶色く、スパイスが効いています。サフランライスと共に提供されることが多く、具は、豚肉や玉ねぎ、人参、ジャガイモなどです。

3. 能登ののどぐろ: 能登半島ののどぐろは、石川県のご当地グルメの代表格です。のどぐろは、タツノオトシゴのことです。のどぐろは、脂がのっていて、身は白身で、上品な味と食感です。塩焼きや、煮付け、揚げ物などで提供されます。

4. 加賀野菜のいろいろ: 石川県は、加賀野菜の生産が盛んで、加賀野菜は、石川県のご当地グルメの原料として使われています。加賀野菜は、白菜、キャベツ、ブロッコリー、カリフラワー、などが代表的です。

簡単にテキスト生成ができました!

生成AI・LLMのコストでお困りなら

GPUのスペック不足で生成AIの開発が思うように進まないことはありませんか?

そんなときには、高性能なGPUをリーズナブルな価格で使えるGPUクラウドサービスがおすすめです!

GPUSOROBAN
GPUSOROBAN

GPUSOROBANは、生成AI・LLM向けの高速GPUを業界最安級の料金で使用することができます。

インターネット環境さえあれば、クラウド環境のGPUサーバーをすぐに利用可能です。

大規模な設備投資の必要がなく、煩雑なサーバー管理からも解放されます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
EdgeHUBロゴ

メールマガジン登録

Stable Diffusion・LLM・RAGに関する最新情報をいち早くお届けします。

無料メルマガの配信をご希望の方は、下記フォームよりご登録ください。

    EdgeHUB編集部からのお知らせ

    無料ウェビナーのお知らせ

    11/27ウェビナー

    RAG×日本語LLMの無料オンラインウェビナー第2弾!

    開催日時:
    2024年11月27日(水) 14:00~15:00

    内容:

    • 「LlamaIndex」と「Llama-3.1-Swallow」でRAG環境を構築
    • 生成AI開発の強い味方「GPUSOROBAN」の活用方法

    このウェビナーでは、オープンソース「LlamaIndex」で構築したRAGの使い方や、デモを紹介します。

    生成AIに関心のある方、AI技術をビジネスに活かしたい方は、ぜひこの貴重な機会にご参加ください!

    こんな方におすすめ!

    • 日本語LLMの利用を検討している方
    • AI開発に携わっている方
    • 最新のAI技術やトレンドに興味がある方
    • GPUスペック不足に悩んでいる方

    \簡単1分で申し込み!/

    この記事を書いた人

    EdgeHUBは、NVIDIAクラウドパートナーである株式会社ハイレゾが運営しています。「AIと共にある未来へ繋ぐ」をテーマに、画像生成AI、文章生成AI、動画生成AI、機械学習・LLM、Stable Diffusionなど、最先端の生成AI技術の使い方をわかりやすく紹介します。

    目次