GPT-4超えの日本語LLM「Llama-3-ELYZA-JP」の性能・使い方!

GPT-4超えの日本語LLM「Llama-3-ELYZA-JP」の性能・使い方!

Llama-3-ELYZA-JPは、東大・松尾研発のスタートアップELYZAが公開した日本語LLMです。

Llama-3-ELYZA-JP-70Bは、「GPT-4」や「Claude 3 Sonnet」を上回る性能があります。

この記事では、Llama-3-ELYZA-JPの性能から使い方まで紹介します。

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

目次

Llama-3-ELYZA-JPとは

見出し画像

Llama-3-ELYZA-JPは、Meta社のLlama3をベースに追加学習をして開発された日本語LLMです。

700億パラメータの「Llama-3-ELYZA-JP-70B」は、「GPT-4」や「Claude 3 Sonnet」を上回る性能を持っています。

ざっくり言うと

  • Llama3をベースに追加学習した日本語LLM
  • 700億パラメータのモデルは、GPT-4を上回る性能を持つ
  • 80億パラメータのモデルは、無料で商用利用も可能

Llama-3-ELYZA-JPのモデル

見出し画像

Llama-3-ELYZA-JPのモデルには複数の種類があり、「パラメータサイズ」と「量子化」で分けられます。

モデルIDパラメータサイズ量子化公開
elyza/Llama-3-ELYZA-JP-8B80億パラメータなしHuggingFace
elyza/Llama-3-ELYZA-JP-8B-AWQ80億パラメータあり(AWQ)HuggingFace
elyza/Llama-3-ELYZA-JP-8B-GGUF80億パラメータあり(GGUF)HuggingFace
Llama-3-ELYZA-JP-70B700億パラメータなしデモサイト

80億パラメータのLlama-3-ELYZA-JP-8Bは、HuggingFaceで公開されており、無料でダウンロードできます。

700億パラメータのLlama-3-ELYZA-JP-70Bは、ELYZAのデモサイトでお試し利用ができますが、残念ながらダウンロードすることはできません。

量子化をした軽量のモデルには、AWQとGGUFのタイプがありますが、以下のような違いがあります。

AWQ・GGUFの違い

AWQ

vLLM、HuggingFace、TensorRT-LLM、FastChatなどでサポートされているフォーマットです。

GGUF

Ollama、llama.cppなどでサポートされているフォーマットです。

Llama-3-ELYZA-JPの性能

見出し画像

日本語能力に関するベンチマーク評価(ELYZA Tasks 100、Japanese MT-Bench)を使って、モデルの性能を比較しています。

700億パラメータの「Llama-3-ELYZA-JP-70B」は、GPT-4やClaude 3 Sonnetを上回る性能を出しています。

70Bのベンチマーク
(出典:https://note.com/elyza/n/n360b6084fdbd)

80億パラメータの「Llama-3-ELYZA-JP-8B」は、GPT-3.5 Turbo、Gemini 1.0 Proに匹敵する性能を出しています。

8Bのベンチマーク
(出典:https://note.com/elyza/n/n360b6084fdbd)
モデルの評価について

ELYZA Tasks 100

複雑な指示やタスクを含む多様な日本語データセットを用い、明確な基準で評価をするベンチマークです。

https://huggingface.co/datasets/elyza/ELYZA-tasks-100

Japanese MT-Bench

日本語による複数ターンの質問をして、モデルの応答を多角的に評価するベンチマークです。

https://github.com/Stability-AI/FastChat/tree/jp-stable/fastchat/llm_judge#llm-judge

Llama-3-ELYZA-JPの商用利用・ライセンス

見出し画像

Llama-3-ELYZA-JP-8Bは、「META LLAMA 3 COMMUNITY LICENSE」に基づいて、無料で使用でき商用利用も可能です。

META LLAMA 3 COMMUNITY LICENSEの要点

商用利用:ソフトウェアやコードを商用利用することが許可されています。

改変:ソフトウェアやコードを自由に修正したり改変したりすることができます。

配布:修正したり変更したりしたソフトウェアを自由に配布することができます。

著作権表示:再配布時に、著作権の表示や契約書コピーの提供などが必要になります。

特許利用:特許利用に関する明示的な規定はありません。

商用利用は、「月間アクティブユーザーが7億人以下であれば無償で利用できる」条件つきです。

詳細は「META LLAMA 3 COMMUNITY LICENSE」のページをご確認ください。

Llama-3-ELYZA-JPの使い方

見出し画像

ここからLlama-3-ELYZA-JPを使ったテキスト生成について解説していきます。

実行環境

この記事で用意した実行環境は以下のとおりです。

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

Dockerで環境構築

Dockerを使用してLlama-3-ELYZA-JPの環境構築をします

Dockerの使い方は以下の記事をご覧ください。

STEP
Dockerfileの作成

コンテナにインストールするパッケージは以下のとおりです。

CUDA、PyTorch、Transformersはバージョン依存関係によるエラーが起きやすいので、動作検証済のバージョン指定してインストールしています。

パッケージ一覧
  • CUDA:12.1
  • Python:3.10
  • PyTorch:2.2.2
  • transformers:4.41.2
  • accelerate
  • triton

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

mkdir elyza3_inference
cd elyza3_inference
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

# PyTorchのインストール
RUN /app/.venv/bin/pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121

# Transformer関連のインストール
RUN /app/.venv/bin/pip install transformers==4.41.2 accelerate bitsandbytes

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

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

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

docker-compose.ymlでDockerコンテナの設定をします。

docker-compose.ymlのYAMLファイルを作成して開きます。

nano docker-compose.yml

以下のコードをコピーして、YAMLファイルに貼り付けます。

services:
  elyza3_inference:
    build:
      context: .
      dockerfile: Dockerfile
    image: elyza3_inference
    runtime: nvidia
    container_name: elyza3_inference
    ports:
      - "8888:8888"
    volumes:
      - .:/app/elyza3_inference
    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コンテナを起動

Dockerfileからビルドしてコンテナを起動します。   

docker compose up

 

Dockerの起動後にブラウザの検索窓に”localhost:8888″を入力すると、Jupyter Labをブラウザで表示できます。

localhost:8888

Llama-3-ELYZA-JP-8Bの実装

Dockerコンテナで起動したJupyter Lab上でLlama-3-ELYZA-JP-8Bの実装をします。

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

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

import torch
import transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
STEP
モデルとトークナイザーの設定

Llama-3-ELYZA-JPのモデルとトークナイザーを読み込みます。

model_id = "elyza/Llama-3-ELYZA-JP-8B"

tokenizer = AutoTokenizer.from_pretrained(model_id)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype="auto",
    device_map="auto",
)
コードの説明

“elyza/Llama-3-ELYZA-JP-8B” : モデルのタイプを指定しています。

AutoModelForCausalLM.from_pretrained():モデルを読み込みます。

AutoTokenizer.from_pretrained():トークナイザーを読み込みます。

モデルIDパラメータサイズ量子化GPUメモリ使用量
elyza/Llama-3-ELYZA-JP-8B80億パラメータなし17GB

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

AWQの量子化モデル「elyza/Llama-3-ELYZA-JP-8B-AWQ」を使う場合は、vllmなどの環境構築が必要です。

GGUFの量子化モデル「elyza/Llama-3-ELYZA-JP-8B-GGUF」を使う場合は、Ollamaやllama.cppなどの環境構築が必要です。

Llama-3-ELYZA-JP-8Bでテキスト生成

見出し画像

Llama-3-ELYZA-JP-8Bを使って、日本語での質問応答を試してみます。

日本語での質問応答

「佐賀県の観光地を教えて下さい。」というプロンプトを日本語で実行してみます。

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
)

token_ids = tokenizer.encode(
    prompt, add_special_tokens=False,
    return_tensors="pt"
)

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=512,
        do_sample=True,
        temperature=0.6,
        top_p=0.9,
    )

output = tokenizer.decode(
    output_ids.tolist()[0][token_ids.size(1):], 
    skip_special_tokens=True
)
print(output)

佐賀県の観光地を教えて下さい。

佐賀県は、九州の北西部に位置し、自然、歴史、文化など多くの観光スポットがあります。以下は、佐賀県の代表的な観光地です。

1.唐津城: 唐津市のシンボルである城は、天守閣が現存する日本最古の城です。桜の名所でもあります。

2.呼子: 唐津市の呼子地区は、海に突き出た岬で、夕日が美しいと評判です。海の幸も新鮮で、イカやサバの活き造りが有名です。

3.有田焼の里: 有田町は、佐賀県の陶磁器の産地です。工房や美術館を訪れて、有田焼の歴史や技術を学ぶことができます。

4.武雄温泉: 武雄市の温泉は、古くから知られ、多くの文人墨客が訪れました。温泉街には、和菓子や甘味処もあります。

5.虹の松原: 多久市の虹の松原は、約260本の松が並ぶ景勝地です。特に、日没時は、松並木が虹色に染まります。

6.伊万里: 伊万里市は、佐賀県の西部に位置し、伊万里焼の産地です。工房や美術館を訪れて、伊万里焼の美術館を学ぶことができます。

7.神埼城: 神埼市の神埼城は、戦国時代の城で、現在は復元されています。周囲は、桜やつつじの名所です。

8.太良町の棚田: 太良町は、佐賀県の北西部に位置し、棚田が美しいと評判です。特に、稲穂が実る時期は、風景が一層美しくなります。
これらの観光地は、佐賀県の自然、歴史、文化を代表するスポットです。訪れてみて、佐賀県の魅力を体感してください。

佐賀県の観光情報を詳しく提供できています!

生成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技術の使い方をわかりやすく紹介します。

    目次