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?

はじめに

最近 Hugging Face で公開された GPT-OSS-6.0B Specialized All-Pruned MoE (7 experts) を試してみました。
このモデルは OpenAI GPT-OSS-20B をベースにした Mixture-of-Experts (MoE) 型で、32あった専門家(experts)を7つに剪定した軽量版。パラメータも 21B → 6B まで減らしているのに、推論は高速で、Colabでも動かせるのが魅力です。
「じゃあ手軽に要約させてみよう!」と Colab に持ち込みました。

このモデルのおすすめ用途

1. 軽量要約エンジン
・向いている理由:6Bパラメータまで絞り込まれていて Colab やローカルGPUでも動く
・具体例:ニュース記事や論文の要約を英語で生成 → DeepL等で翻訳
・ポイント:日本語直入力よりも英語で投げた方が安定

2. リソース制約下での文章生成
・向いている理由:21Bモデルよりも計算コストが軽く、推論速度も速い
・具体例:モバイルGPU/エッジサーバーでの要約、QA、対話の試作
・ポイント:低メモリ環境でも動く「試験台」として活用できる

3. 研究・教材用途(MoEの挙動観察)
・向いている理由:専門家(Experts)の剪定が行われた珍しい公開モデル
・具体例:どのタスクでどの Expert が呼ばれるかを可視化する研究、MoEの効率化・圧縮手法を学習する教材
・ポイント:「再学習なしの pruning」でここまで使える、というケーススタディになる

4. プロトタイプやPoC用途
・向いている理由:Apache-2.0 ライセンスで商用利用も可能
・具体例:チャットボットやFAQ要約のプロトタイプ、社内ドキュメントの要点抽出ツール
・ポイント:最初の実験には十分。ただし本番環境では他モデルとの比較検証が必要

5. 英語中心の生成タスク
・向いている理由:日本語よりも英語入力で安定した結果が得られる
・具体例:海外ニュースの要約・抄訳、学術文献レビュー(英語 → 要約 → 日本語翻訳)
・ポイント:グローバルなテキストを扱う研究者・ブロガーに最適

セットアップ

・Colab では以下の環境で動作を確認しました。
transformers>=4.43
・GPU (T4) + 4bit 量子化
trust_remote_code=True を付与してロード
・エラーを避けるため、apply_chat_template の戻りを Tensor にしてから model.generate に渡すよう修正しました。

手順

1 依存関係のインストール

!pip -q install "transformers>=4.43,<5" accelerate bitsandbytes sentencepiece einops
import torch, transformers, platform
print("torch:", torch.__version__, "| transformers:", transformers.__version__, "| cuda:", torch.cuda.is_available())

2 モデル読込(省メモリの4bit推奨)

from transformers import AutoModelForCausalLM, AutoTokenizer

MODEL_ID = "AmanPriyanshu/gpt-oss-6.0b-specialized-all-pruned-moe-only-7-experts"

tokenizer = AutoTokenizer.from_pretrained(
    MODEL_ID,
    trust_remote_code=True,   # モデル側の実装を使うため
    use_fast=True
)

model = AutoModelForCausalLM.from_pretrained(
    MODEL_ID,
    device_map="auto",        # GPUに自動割当
    trust_remote_code=True,   # ※MoE実装で必要
    load_in_4bit=True,        # T4でも安定
)
model.eval()
print("Loaded on:", model.device)

3 要約用プロンプト作成 & 生成

import torch

system_msg = "あなたは日本語で、重要点を短く正確に要約するアシスタントです。"
user_text = """
気候変動は、産業革命以降の温室効果ガス排出により地球の平均気温が上昇し、
極端気象や生態系への影響、経済・健康リスクを増大させている。各国は再生可能エネルギー導入や
省エネ、カーボンプライシングなどで対策を進めているが、移行コストや公正性の課題が残る。
"""
instruction = "上の本文を日本語で150〜200字に要約してください。箇条書きは使わず、冒頭に結論を書いてください。"

messages = [
    {"role": "system", "content": system_msg},
    {"role": "user", "content": instruction + "\n\n" + user_text.strip()},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
    # モデルカード例に合わせた引数名を残しています(なくても可)
    reasoning_effort="medium"
)

# 入力をモデルのデバイスへ
inputs = {k: (v.to(model.device) if isinstance(v, torch.Tensor) else v) for k, v in inputs.items()}

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=220,
        temperature=0.7,
        top_p=0.95,
        do_sample=True,
        pad_token_id=tokenizer.eos_token_id,
        eos_token_id=tokenizer.eos_token_id,
        use_cache=True,
    )

# 生成部分だけを取り出してデコード
input_len = inputs["input_ids"].shape[1]
gen_tokens = outputs[0][input_len:]
summary = tokenizer.decode(gen_tokens, skip_special_tokens=True)
print(summary)

日本語で要約してみたら…
最初はそのまま日本語で要約を依頼しました。
【入力文】
産業革命による温室効果ガス排出量の増加によって引き起こされた気候変動は、地球の平均気温を上昇させ、生態系を脅かす異常気象を引き起こし、経済と健康にリスクをもたらしています。各国は現在、気候危機を抑制するために、対策を講じています。
【出力】
気候変変は産業革命以降の温室 效ガ格排出より地球平均温上 高し、極端気象、生態系への影影、経、健康リRis大化。各国再生可能エ能導入、省エ、カ 管等で対策進めているが、移行コ、公正性課題残。


おかしな日本語になってしまいました。

英語に変えてみたら安定!
そこで発想を変え、本文もプロンプトも全部英語に。

【Input (English)】
Climate change is a rise in the Earth's average temperature caused by greenhouse gas emissions since the Industrial Revolution,
leading to extreme weather events, impacts on ecosystems, and increased economic and health risks. Countries are taking measures to address this issue, including the introduction of renewable energy, energy conservation, and carbon pricing, but challenges remain regarding the transition costs and fairness.
【Output (English summary)】
So just one paragraph. Let's produce.assistantfinalClimate change, driven by increased greenhouse‑gas emissions from the Industrial Revolution, has raised the Earth's average temperature, triggering extreme weather events that threaten ecosystems, imposing economic and health risks. Nations are now acting to curb the climate crisis by adopting

おお、きれいにまとまった!
その後これを DeepL で日本語に戻すと、報告書にそのまま貼れるレベルになりました。

わかったこと

・日本語入力 → 出力が不安定(同じ文の繰り返し、変な表現)
・英語入力 → すっきり要約、論理も安定
多言語対応はまだ不安定。英語経由が現実解
・MoEモデルなのに Colabで軽快に動き、研究や記事ネタに向いている

まとめ

GPT-OSS-6B MoE は軽量ながら要約には十分使えます。
ただし「日本語直入力」はまだ弱点があるので、英語に変換して入力 → 要約 → 日本語に戻すというワークフローが一番安定しました。
AIで遊ぶときは「思った通り動かない」ことも実験の醍醐味。今回も日本語で苦戦しつつ、英語経由で意外な解決策にたどり着いたのはちょっと面白い発見でした。


フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。

Twitter
Medium

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?