東大松尾研LLM「Tanuki-8x8B」の使い方・性能・商用利用を解説!

東大松尾研LLM!「Tanuki-8x8B」の使い方・性能・商用利用を解説!

Tanuki-8x8Bは、東京大学松尾・岩澤研究室が開発した日本語特化のLLMです。

日本語での共感的かつ自然な対話や文章生成に優れ、GPT-3.5 Turboと同等の性能を誇ります。

この記事では、Tanuki-8x8Bの性能から使い方まで紹介します。

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

目次

Tanuki-8x8Bとは

見出し画像

Tanuki-8x8Bは、東京大学松尾・岩澤研究室が開発した日本語特化のLLMです。

日本語での共感的かつ自然な対話と文章生成に優れ、GPT-3.5 Turboと同等の性能を誇ります。

このモデルはHugging Faceで無料で公開されており、研究用途および商業利用が可能です。

Tanuki-8x8Bのモデル

見出し画像

Tanukiシリーズには、8億パラメータのDense構造を持つTanuki-8B-dpo-v1.0と、

47億パラメータのMixture of Experts (MoE)構造を採用したTanuki-8x8B-dpo-v1.0の2つのモデルがあります。

どちらのモデルもHuggingFaceで公開されています。

モデルIDパラメータサイズアーキテクチャ公開
weblab-GENIAC/Tanuki-8B-dpo-v1.08億パラメータDenseHuggingFace
weblab-GENIAC/Tanuki-8x8B-dpo-v1.047億パラメータMixture of Experts (MoE)HuggingFace
アーキテクチャの違い

Dense構造

全てのパラメータを常に活用するシンプルかつ一貫したアーキテクチャで、汎用性が高い一方、計算コストも大きくなります。GPT-3やLlamaなどがDense構造を採用しています。

Mixture of Experts (MoE)構造

特定のパラメータを選択的に使用することで計算効率を大幅に向上させ、非常に大規模なモデルでも効率的に動作するように設計されたアーキテクチャです。GPT-4やMistralがMoE構造を採用しています。

Tanuki-8x8Bの性能

見出し画像

日本語性能を評価するベンチマークのJapanese MT-Benchでは、Tanuki-8x8Bは他の国産モデルと比較して高い評価を得ています。

特に日本語の対話や作文タスクで高いパフォーマンスを発揮し、GPT-4oやClaude 3.5などのトップモデルと比較しても遜色のない結果を示しています。

(出典:https://zenn.dev/matsuolab/articles/95fa297ef12a14)

Chatbot Arenaでの評価において、Tanuki-8x8Bは国産LLMの中でトップクラスの評価を獲得しました。

Chatbot Arenaは、複数の言語モデルを対戦形式で比較し、人間のフィードバックを基に各モデルの性能をランク付けすることで、実際の使いやすさや応答の質を評価できるシステムです。

ベンチマーク
(出典:https://zenn.dev/matsuolab/articles/95fa297ef12a14)

Tanuki-8x8Bの商用利用・ライセンス

見出し画像

Tanuki-8x8Bは商用利用が可能で、Apache License 2.0で提供されています。

HuggingFace上でモデルが公開されており、誰でもアクセスして利用することができます。

Apache License 2.0

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

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

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

著作権表示:元の著作権表示とライセンス条項を含める必要があります。

特許利用:利用者に特許使用権が付与されています。

詳細は「Apache License」のページをご確認ください。

Tanuki-8x8Bの使い方

見出し画像

ここからTanuki-8x8Bを使ったテキスト生成について解説していきます。

実行環境

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

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

Dockerで環境構築

Dockerを使用してTanuki-8x8Bの環境構築をします

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

STEP
Dockerfileの作成

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

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

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

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

mkdir tanuki_8x8
cd tanuki_8x8
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.44.0 accelerate bitsandbytes wheel

# Flash attentionをインストール
RUN /app/.venv/bin/pip install flash-attn --no-build-isolation

# コンテナの起動時に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:
  tanuki_8x8:
    build:
      context: .
      dockerfile: Dockerfile
    image: tanuki_8x8
    runtime: nvidia
    container_name: tanuki_8x8
    ports:
      - "8888:8888"
    volumes:
      - .:/app/tanuki_8x8
    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

Tanuki-8x8Bの実装

見出し画像

Dockerコンテナで起動したJupyter Lab上でTanuki-8x8Bの実装をします。

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

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

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

Tanuki-8x8Bのモデルとトークナイザーを読み込みます。

model_id = "weblab-GENIAC/Tanuki-8x8B-dpo-v1.0"

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
    quantization_config=BitsAndBytesConfig(load_in_4bit=True),
    trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
コードの説明

model_id = “weblab-GENIAC/Tanuki-8x8B-dpo-v1.0” : モデルのタイプを指定しています。

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

device_map="auto": 使用するデバイスを自動選択します。この場合、GPUが優先されます。

torch_dtype="auto":使用するデータ型を自動選択します。

quantization_config=BitsAndBytesConfig(load_in_4bit=True),:4bit量子化の指定をしています。

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

モデルIDパラメータサイズGPUメモリ
weblab-GENIAC/Tanuki-8x8B-dpo-v1.047億パラメータ27GB
  • モデルを読み込む際にGPUメモリを消費するため、余裕を持ったGPUメモリをご用意ください。
  • この記事では、BF16の数値表現と4bit量子化した場合のGPUメモリ使用量を記載しています。

Tanuki-8x8Bでテキスト生成

見出し画像

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

日本語での質問応答

「掃除が面倒ですが、どのようなモチベーションで臨めばよいですか。」という質問をしてみます。

messages = [
    {"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
    {"role": "user", "content": "掃除が面倒ですが、どのようなモチベーションで臨めばよいですか。"}
]

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

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

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=256,
        do_sample=True,
        temperature=0.5
    )

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

掃除が面倒ですが、どのようなモチベーションで臨めばよいですか。

掃除を面倒に感じるのは自然なことです。しかし、モチベーションを見つけることで、そのプロセスが少し楽になるかもしれません。以下にいくつかの方法を提案します。

1.目標設定:
– 短期的な目標と長期的な目標を設定しましょう。例えば、「今日はリビングのテーブルを片付ける」や「毎週末にキッチンを掃除する」といった具体的な目標を立てると、達成感を得やすくなります。

2.環境の改善:
– 掃除をすることで部屋がきれいになり、快適な空間が生まれます。これにより、リラックスしたり集中力を高めたりすることができ、結果的に生活の質が向上します。

3.健康面でのメリット:
– 清潔な環境はアレルギーや感染症の予防につながります。また、整理整頓された空間はストレスを軽減し、精神的な安定をもたらします。

4.時間管理のスキル向上:
– 掃除を習慣化することで、効率的な時間管理のスキルが身につきます。これは他のタスクにも

共感力が高そうです!

日本語での質問応答(2)

「人生最後の日に何をしたいですか。」という質問をしてみます。

messages = [
    {"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
    {"role": "user", "content": "人生最後の日に何をしたいですか。"}
]

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

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

with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        max_new_tokens=256,
        do_sample=True,
        temperature=0.5
    )

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

人生最後の日に何をしたいですか。

人生最後の日に何をしたいかを考えることは、非常に個人的で深いテーマです。この問いに対する答えは、個々人の価値観、目標、経験、そして感情によって大きく異なります。以下は、いくつかの一般的な視点や要素を考慮した応答です。

1. 家族や友人との時間
– 大切な人たちと過ごす: 愛する人々と一緒に過ごし、感謝の気持ちを伝える。
– 思い出を共有する: 過去の思い出を振り返り、笑い合ったり、涙を流したりして絆を深める。

2. 自己実現と成長
– 未完のプロジェクトに取り組む: やり残したことや、達成したかったことに最後の時間を捧げる。
– 学び続ける: 知識を深めたり、新しいスキルを身につけたりするために、何かを学ぶ。

3. 自然との触れ合い
– 美しい場所を訪れる: お気に入りの場所や、まだ訪れていない場所でリラックスする。
– 自然の中で瞑想する:

寄り添うのが上手そうです!

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

    目次