Open12

Transformer のライブラリを完全に理解する

seyaseya
seyaseya

pipeline 関数が推論を行う関数なのでスターティングポイントとして良さそう

https://huggingface.co/docs/transformers/v4.37.0/en/main_classes/pipelines#transformers.pipeline
https://www.youtube.com/watch?v=tiZFewofSLM

テキスト生成はもちろん感情分析や画像分類など様々なタスクを実行できる
こんな感じで実行できた

from transformers import pipeline

classifier = pipeline(task="sentiment-analysis")
result = classifier("I'm very tired")
# [{'label': 'NEGATIVE', 'score': 0.9997826218605042}]
seyaseya

model config ファイルってどんなん?

mixtral のを見てみる
https://huggingface.co/mistralai/Mixtral-8x7B-v0.1/blob/main/config.json

{
  "architectures": [
    "MixtralForCausalLM"
  ],
  "attention_dropout": 0.0,
  "bos_token_id": 1,
  "eos_token_id": 2,
  "hidden_act": "silu",
  "hidden_size": 4096,
  "initializer_range": 0.02,
  "intermediate_size": 14336,
  "max_position_embeddings": 32768,
  "model_type": "mixtral",
  "num_attention_heads": 32,
  "num_experts_per_tok": 2,
  "num_hidden_layers": 32,
  "num_key_value_heads": 8,
  "num_local_experts": 8,
  "output_router_logits": false,
  "rms_norm_eps": 1e-05,
  "rope_theta": 1000000.0,
  "router_aux_loss_coef": 0.02,
  "sliding_window": null,
  "tie_word_embeddings": false,
  "torch_dtype": "bfloat16",
  "transformers_version": "4.36.0.dev0",
  "use_cache": true,
  "vocab_size": 32000
}

一通りのパラメータとその意味はこちらに記載されてるっぽい
https://huggingface.co/docs/transformers/main_classes/configuration

seyaseya
seyaseya

Transformer の定義

確定的な定義があるのかはちょっと調べた限りでは分からなかったがアテンション機構が核心であることは間違いない。

それ以外は

  • レイヤー構造: 複数のアテンションレイヤーを含むスタック構造
  • Positional Encoding
  • encoder-decoder
    • GPTとか最近優秀な結果を出してるものは decoder-only なことが多いがこのアーキテクチャーも特徴の一つ