0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語に特化したLLMでチャットボットを動かすメモ

0
Last updated at Posted at 2025-06-12

はじめに

日本語に特化したllmについて色々と調べていたのですが、ざっと下記のようにさまざまなものがあります。これらはまだllmとしては公開されているものの、普段活用しているようなソフトウェアには対応していないことが多く、動かしてみたいと思った時に、なかなか触るまでのハードルがあるのではないかと思います。
今回は、ローカル実行とhuggingfaceという仕組みを活用して、こうしたモデルを動かして簡単なチャットボットを作成するまでの手順を記載しておきます

(参考)日本語特化LLM一覧表 (Claudeに出してもらったので、一部誤りがある可能性があります、ご了承ください)

名前 特徴 発表年月 最大パラメータ数
SB Intuitions LLM ソフトバンク系、日本語特化国産最大規模、マルチモーダル対応 2024年11月 4,000億
CyberAgentLM3 スクラッチ開発、商用利用可能、Apache License 2.0 2024年7月 225億
Stockmark-2-100B ストックマーク開発、指示追従特化 2025年 1,000億
PLaMo-100B Preferred Networks開発、日英バイリンガル 2024年 1,000億
Stockmark-100b ストックマーク開発、企業向け 2024年 1,000億
リコーLLM 企業向けカスタマイズ特化、日本語精度重視 2024年1月 130億
tsuzumi NTT開発、軽量・高性能 2023年 非公開
Swallow 東京工業大学開発、Llama2ベース 2023年 700億
Llama-3.1-Swallow-8B 東工大開発最新版、長文対応 2024年 80億
CyberAgentLM2 サイバーエージェント第2世代 2023年11月 70億
Japanese StableLM Stability AI Japan開発 2023年 70億
ELYZA-japanese-Llama-2 ELYZA開発、指示追従特化 2023年 700億
PLaMo-13B Preferred Networks開発、日英対応 2023年9月 130億
Rinna GPT rinna開発、会話特化 2023年 36億
Tanuki-8B 松尾研開発、合成データ活用 2024年 80億
Calm2 CyberAgent開発、推論能力重視 2023年 70億
OpenCALM CyberAgent開発、オープンソース 2023年 70億
WebLab-10B 松尾研開発、ウェブデータ学習 2023年 100億
Japanese-Alpaca Stanford Alpacaの日本語版 2023年 130億
Vicuna-13B-Japanese UC Berkeley Vicunaの日本語版 2023年 130億
Mistral-Nemo-Japanese CyberAgent日本語チューニング、Mistralベース 2024年 120億
DeepSeek-Japanese CyberAgent日本語版、高性能推論 2024年 140億
llava-llama-3-8b 視覚言語モデル、画像理解対応 2024年 80億

1 手元のmacで確認する方法

1.ollamaをダウンロードする

2.コマンド実行する(llama3.2:latestの3.2B/3.2億パラメーター)

$ ollama pull llama3.2
$ ollama run llama3.2

3.チャットを利用する

スクリーンショット 2025-06-12 18.41.30.png

4.終了する

$ /bye

5.他のLLMを準備して実行させてみる

Sarashinaを使う場合。GGUF形式のものが必要なので、GGUFをつけて検索を行います。
Hugging Face → Models → 検索バーに「sarashina GGUF」と入力。ここでは、sarashina2.2-3b-instruct-v0.1-ggufを利用してみる。

$ ollama pull hf.co/mmnga/sarashina2.2-3b-instruct-v0.1-gguf
$ ollama run hf.co/mmnga/sarashina2.2-3b-instruct-v0.1-gguf

他のLLMを準備するときの注意点。

Hugging Face Hub に公開されているモデルであれば、公式ライブラリに登録されていなくても直接ダウンロードして実行可能。
https://huggingface.co/docs/hub/ollama
ollama run hf.co/{username}/{repository}

ただ、ライブラリに存在しないものを利用する場合は自分で変換が必要。変換手順は以下。

# 1. llama.cppをクローン
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

# 2. ビルド
make

# 3. モデルをダウンロード
git lfs install
git clone https://huggingface.co/sbintuitions/sarashina2.2-3b-instruct-v0.1

# 4. GGUF形式に変換
python convert_hf_to_gguf.py sarashina2.2-3b-instruct-v0.1/ --outdir ./converted/

# 5. 量子化(オプション、サイズを小さくしたい場合)
./llama-quantize ./converted/ggml-model-f16.gguf ./converted/ggml-model-q4_0.gguf q4_0


6.serverで動かす場合

$ ollama serve

7.API Callしてみる

curl -X POST http://localhost:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "messages": [
      {
        "role": "user",
        "content": "こんにちは"
      }
    ]
  }'

2.Huggingfaceで実行する方法

1. New -> Spaceを選択

スクリーンショット 2025-06-12 16.18.10.png

2.必要な部分を埋める

スクリーンショット 2025-06-12 16.19.32.png

3.filesで必要なファイルを確認

スクリーンショット 2025-06-12 16.23.53.png

4.ファイルを編集 (app.pyとrequirements.txtを置き換える)

スクリーンショット 2025-06-12 16.24.03.png

下記コードを参照
https://github.com/oggata/huggingface-chat-demo/tree/main

5.Appに戻って待つ

6.APIから使う

アプリの一番下に、「Use Via API」のリンクがあるので開くと、Python / JavaScript などからAPIのcall方法がわかる.

注意;UseVia APIの記述だとオプション数が足りていないので、下記のように6つのオプションをつけること

また返答はGradioの仕様として
"\u3053\u3093\u306b\u3061\u306f\uff01\u4eca\u65e5\u306f\u3069\u3046\u3057\u307e\u3057\u305f\u304b\uff1f"
のように返ってくるので
Unicodeエスケープをデコードする必要がある。

curl -X POST https://===spacename===/gradio_api/call/chat -s -H "Content-Type: application/json" -d '{
  "data": [
							"Hello!!","","You are a friendly and knowledgeable assistant. You carefully answer users questions.",512,0.7,0.95
]}' \
  | awk -F'"' '{ print $4}'  \
  | read EVENT_ID; curl -N https://===spacename===/gradio_api/call/chat/$EVENT_ID

import json
response = '"\u3053\u3093\u306b\u3061\u306f\uff01\u4eca\u65e5\u306f\u3069\u3046\u3057\u307e\u3057\u305f\u304b\uff1f"'
decoded = json.loads(response)
print(decoded)  #

注意点

スペースの最大は100Gまで
それ以上のLLMモデルを使う場合は
Inference API/Serverless Inference
を活用
(モデルをダウンロードせずにAPI経由でアクセス)

from huggingface_hub import InferenceClient

client = InferenceClient(
    provider="together",
    api_key="your_hf_token"
)

# 大規模モデルの利用

response = client.chat_completion(
    model="meta-llama/Meta-Llama-3-70B-Instruct",
    messages=[{"role": "user", "content": "Hello"}]
)

ただし、Sarashina2-70BとSarashina2-8x70Bの両方のモデルページで
「This model is not currently available via any of the supported Inference Providers.」と明記
のため、ローカルで動かすか、HuggingFaceのInference Endpointsなどを活用する

CyberAgent Open CALM 7Bなどを活用した事例を下記にサンプルとして残します

TODO 70Bも読み込みたい

スクリーンショット 2025-07-03 10.18.19.png

    # 利用可能なLLMモデル(Inference API対応確認済み)
    self.models = {
        # 日本語特化モデル(Inference API対応)
        "cyberagent/open-calm-7b": "CyberAgent Open CALM 7B",
        "rinna/japanese-gpt-neox-3.6b-instruction-sft": "Rinna GPT-NeoX 3.6B",
        "matsuo-lab/weblab-10b-instruction-sft": "Matsuo Lab WebLab 10B",
        "stabilityai/japanese-stablelm-instruct-alpha-7b": "Japanese StableLM 7B",
        "tokyotech-llm/Swallow-7b-instruct-hf": "Swallow 7B Instruct (日本語対応)",
        "elyza/ELYZA-japanese-Llama-2-7b-instruct": "ELYZA Japanese Llama 2 7B",
        
        # 多言語対応・英語モデル(Inference API対応)
        "microsoft/DialoGPT-large": "DialoGPT Large (対話特化)",
        "bigscience/bloom-7b1": "BLOOM 7B (多言語)",
        "mistralai/Mistral-7B-Instruct-v0.2": "Mistral 7B Instruct v0.2",
        "microsoft/DialoGPT-medium": "DialoGPT Medium (対話特化)",
        "HuggingFaceH4/zephyr-7b-beta": "Zephyr 7B Beta (対話特化)",
        "NousResearch/Nous-Hermes-2-Yi-34B": "Nous Hermes 2 Yi 34B",
        "upstage/SOLAR-10.7B-Instruct-v1.0": "SOLAR 10.7B Instruct",
        
        # 70Bクラス(PRO/Enterprise向け)
        "meta-llama/Meta-Llama-3.1-70B-Instruct": "Llama 3.1 70B Instruct (PRO)",
        "meta-llama/Llama-2-70b-chat-hf": "Llama 2 70B Chat (PRO)",
        "meta-llama/Meta-Llama-3-70B-Instruct": "Llama 3 70B Instruct (PRO)"
    }

現状の課題としては、日本語専用のLLMで7Bを超える規模のものがInference APIに対応していない。なので、日本語LLMを動かすには、

  1. Dedicated Inference Endpoints

有料サービス: 専用インフラでllmを動かせる
完全制御: 自分の用途に最適化可能

  1. ローカル実行

高性能GPU: A100やH100などで直接実行
量子化: 4bit量子化などでリソース削減

などで行う必要があるのでは。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?