Transformers documentation

Cohere

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2024年3月15日にHugging Face Transformersに貢献されました。

FlashAttention SDPA Tensor parallelism

Cohere

Cohere Command-R は、検索拡張生成(RAG)や外部 API・ツールの呼び出しといった長文脈タスク向けに設計された、35B パラメータの多言語大規模言語モデルです。このモデルは、根拠に基づいた生成(grounded generation)に特化して訓練されており、単一ステップおよび複数ステップのツール使用をサポートしています。128K トークンのコンテキスト長に対応しています。

すべてのオリジナルのCommand-Rチェックポイントは、Command Modelsコレクション内で確認できます。

Cohere を異なる言語タスクに適用する方法のさらなる例については、右側のサイドバーにある Cohere モデルをクリックしてください。

以下の例では、PipelineまたはAutoModel、およびコマンドラインからテキストを生成する方法を示しています。

パイプライン
AutoModel
transformers CLI
from transformers import pipeline


pipeline = pipeline(
    task="text-generation",
    model="CohereForAI/c4ai-command-r-v01",
    device=0
)
pipeline("Plants create energy through a process known as")

Quantization は、重みを低精度で表現することで、大規模モデルのメモリ負荷を軽減します。利用可能な Quantization バックエンドの詳細については、Quantization の概要を参照してください。

以下の例では、bitsandbytes を使用して重みを4ビットに量子化します。

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig


bnb_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
model = AutoModelForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01", device_map="auto", quantization_config=bnb_config, attn_implementation="sdpa")

# format message with the Command-R chat template
messages = [{"role": "user", "content": "How do plants make energy?"}]
input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)
output = model.generate(
    input_ids,
    max_new_tokens=100,
    do_sample=True,
    temperature=0.3,
    cache_implementation="static",
)
print(tokenizer.decode(output[0], skip_special_tokens=True))

AttentionMaskVisualizer を使用して、モデルが注意できるトークンと注意できないトークンをより深く理解してください。

from transformers.utils.attention_visualizer import AttentionMaskVisualizer


visualizer = AttentionMaskVisualizer("CohereForAI/c4ai-command-r-v01")
visualizer("Plants create energy through a process known as")

注記

  • FlashAttention-2 を使用している場合は、from_pretrained() で dtype パラメータを使用しないでください。FlashAttention-2 は fp16 または bf16 のみサポートしているためです。Automatic Mixed Precision を使用するか、Trainer を使用する場合は fp16 または bf16 を True に設定するか、torch.autocast を使用してください。

CohereConfig

class transformers.CohereConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 256000hidden_size: int = 8192intermediate_size: int = 22528logit_scale: float | None = 0.0625num_hidden_layers: int = 40num_attention_heads: int = 64num_key_value_heads: int | None = Nonehidden_act: str = 'silu'max_position_embeddings: int = 8192initializer_range: float = 0.02layer_norm_eps: float | None = 1e-05use_cache: bool = Truepad_token_id: int | None = 0bos_token_id: int | None = 5eos_token_id: int | list[int] | None = 255001tie_word_embeddings: bool = Truerope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: float | int | None = 0.0use_qk_norm: bool | None = False )

パラメータ

  • vocab_size (int、任意、デフォルトは 256000) — モデルの語彙サイズです。input_ids で表現できるトークンの種類数を定義します。
  • hidden_size (int、任意、デフォルトは 8192) — 隠れ表現の次元数。
  • intermediate_size (int、任意、デフォルトは 22528) — MLP 表現の次元数です。
  • logit_scale (float、任意、デフォルト値は 0.0625) — 出力 logits のスケーリング係数です。
  • num_hidden_layers (int、任意、デフォルトは 40) — Transformer デコーダーにおける隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは 64) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • num_key_value_heads (int, 任意) — Grouped Query Attention を実装するために使用する key_value ヘッドの数です。 num_key_value_heads=num_attention_heads の場合、モデルは Multi Head Attention (MHA) を使用し、 num_key_value_heads=1 の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA チェックポイントに変換する際は、各グループの key ヘッドと value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、この論文を参照してください。指定されない場合、デフォルトで num_attention_heads が使用されます。
  • hidden_act (str、任意、デフォルトは silu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • max_position_embeddings (int、任意、デフォルトは 8192) — このモデルが使用される可能性のある最大シーケンス長です。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • layer_norm_eps (float、任意、デフォルトは 1e-05) — レイヤーノーマル層で使用する epsilon です。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • pad_token_id (int、任意、デフォルトは 0) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 5) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 255001) — 語彙におけるストリーム終了に使用されるトークン ID。
  • tie_word_embeddings (bool、任意、デフォルトは True) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書には rope_theta の値が含まれており、より長い max_position_embeddings で RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。
  • attention_bias (bool、任意、デフォルトはFalse) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうかを指定します。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • use_qk_norm (bool、省略可、デフォルトはFalse) — アテンションでクエリ・キー正規化を使用するかどうか。

これは CohereModel の設定を保存するための設定クラスです。指定された引数に基づいて Cohere モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、CohereForAI/c4ai-command-r-v01 と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

>>> from transformers import CohereModel, CohereConfig

>>> # Initializing a Cohere model configuration
>>> configuration = CohereConfig()

>>> # Initializing a model from the Cohere configuration
>>> model = CohereModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

CohereTokenizer

クラス transformers.CohereTokenizer

< >

( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Noneerrors: str = 'replace'unk_token: str = '<UNK>'bos_token: str = '<BOS_TOKEN>'eos_token: str = '<|END_OF_TURN_TOKEN|>'pad_token: str = '<PAD>'cls_token: str = '<CLS>'sep_token: str = '<SEP>'mask_token: str = '<MASK_TOKEN>'use_default_system_prompt: bool = Falseadd_prefix_space: bool = False**kwargs )

パラメータ

  • vocab_file (str, 任意) — 語彙ファイルへのパス。
  • merges_file (str, 省略可) — merges ファイルへのパス。
  • tokenizer_file (str, 任意) — tokenizer を読み込むために必要な情報がすべて含まれている tokenizers ファイル(通常は .json 拡張子)です。
  • clean_up_tokenization_spaces (bool、任意、デフォルトはFalse) — デコード後にスペースをクリーンアップするかどうか。クリーンアップとは、余分なスペースなどの潜在的なアーティファクトを削除することを指します。
  • unk_token (str または tokenizers.AddedToken、任意、デフォルトは "<UNK>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。
  • bos_token (str または tokenizers.AddedToken、任意、デフォルトは "<BOS_TOKEN>") — 事前学習で使用されたシーケンス開始トークンです。シーケンス分類器のトークンとして使用できます。
  • eos_token (str または tokenizers.AddedToken、任意、デフォルトは "<|END_OF_TURN_TOKEN|>") — シーケンスの終了トークンです。
  • add_bos_token (bool、任意、デフォルトは True) — シーケンスの先頭に bos_token を追加するかどうか。
  • add_eos_token (bool、任意、デフォルトは False) — シーケンスの末尾に eos_token を追加するかどうか。
  • use_default_system_prompt (bool、任意、デフォルトは False) — Cohere トークナイザーのデフォルトのシステムプロンプトを使用するかどうかを指定します。
  • add_prefix_space (bool、省略可、デフォルトはFalse) — トークナイザーがプレフィックススペースを自動的に追加するかどうか
  • vocab (str、dict または list、任意) — カスタム語彙辞書。指定しない場合、vocab_file から語彙が読み込まれます。
  • merges (str または list[str]、省略可) — カスタムマージリスト。指定しない場合、merges_file からマージが読み込まれます。

Cohereのトークナイザーを構築します。バイトレベルのByte-Pair-Encodingに基づいています。

ここでは、ByteFallbackとNFC正規化が特に使用されています。

>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
>>> tokenizer.encode("Hello this is a test")
[5, 28339, 2075, 1801, 1671, 3282]

bos_token または eos_token を変更する場合は、モデルの初期化時にそれらを指定するか、tokenizer.update_post_processor() を呼び出して、後処理が正しく行われることを確認してください(そうしないと、エンコードされたシーケンスの最初のトークンと最後のトークンの値が正しくなりません)。詳細については、[post-processors] (https://huggingface.co/docs/tokenizers/api/post-processors) のドキュメントを参照してください。

この動作を回避するには、このトークナイザーをインスタンス化する際にadd_prefix_space=Trueを渡すことができますが、モデルはこの方式で事前学習されていないため、パフォーマンスが低下する可能性があります。

is_split_into_words=True と併用する場合、このトークナイザーは add_prefix_space=True を指定してインスタンス化する必要があります。

このトークナイザーは、主要なメソッドの大部分を含む TokenizersBackend を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

apply_grounded_generation_template

< >

( conversation: listdocuments: listcitation_mode: typing.Literal['fast', 'accurate'] = 'accurate'**kwargs ) → str

パラメータ

  • conversation (list[dict[str, str]]) — “role”キーと“content”キーを持つ辞書のリスト。これまでに蓄積されたチャット履歴を表します。
  • documents (list[dict[str, str]) — ドキュメントやツール出力のリスト。生成の根拠となるデータです。各ドキュメントは半構造化された dict で、文字列から文字列へのマッピングを持ちます。一般的なフィールドには url、title、snippet などがありますが、キーの意味を説明するものにする必要があります。これらのフィールドはプロンプトにレンダリングされます。
  • citation_mode — “accurate”(モデルにまず回答を生成させ、その後、引用スパンを挿入して書き直すよう指示する)または “fast”(プロンプトで、モデルに直接引用を付けた回答を生成させるよう指示する)のいずれかです。前者は引用の品質が高く、後者は生成に必要なトークン数が少なくなります。
  • add_generation_prompt (bool, 省略可) — プロンプトの末尾に、アシスタントメッセージの開始を示すトークンを付加するかどうかを指定します。モデルから応答を生成したい場合に有用です。この引数はチャットテンプレートに渡されるため、この引数が効果を発揮するには、テンプレート側でのサポートが必要です。
  • tokenize (bool、デフォルトはTrue) — 出力をトークン化するかどうかを指定します。Falseの場合、出力は文字列になります。
  • padding (bool、デフォルトは False) — シーケンスを最大長にパディングするかどうか。False の場合は無効です。
  • truncation (bool、デフォルトは False) — 最大長でシーケンスを切り詰めるかどうか。tokenize が False の場合は無効です。
  • max_length (int, 省略可) — パディングや切り詰めのために使用する最大長(トークン数)。tokenize が False の場合は無効です。指定しない場合、デフォルトとしてトークナイザーの max_length 属性が使用されます。
  • return_tensors (str または TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。tokenize が False. 指定可能な値は次のとおりです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': NumPyのnp.ndarrayオブジェクトを返します。
  • return_dict (bool、任意、デフォルトは False) — 名前付き出力を含む辞書を返すかどうか。False の場合は無効です。
  • **tokenizer_kwargs — トークナイザーに渡す追加の引数。

戻り値

str

レンダリングされたプロンプト文字列。 または、tokenize=Trueの場合: list[int]: これまでのトークン化されたチャットを表すトークンIDのリスト。制御トークンを含む。この出力は、generate()などのメソッドを介して、または直接モデルに渡す準備ができています。

Command-R のグラウンデッド生成(RAG とも呼ばれる)プロンプトを作成します。

レンダリングが完了すると、プロンプトは、提供されたドキュメントに基づいて、引用を付けた応答を生成するようにモデルに指示します。

概念的には、これはapply_chat_formatと同じ仕組みで動作しますが、追加のdocumentsとcitation_modeパラメータを受け取ります。

"role" と "content" キーを持つ辞書のリストと、モデルが応答の根拠とするドキュメントのリストを、プロンプト文字列またはトークン ID のリストに変換します。 このメソッドは、クラスレベルで指定されたトークナイザーの grounded_generation_template テンプレートを使用します。 grounded_generation_template キーワード引数を使用してデフォルトのテンプレートを上書きできますが、結果の品質が低下する可能性があります。

例:

>> tokenizer = CohereTokenizer.from_pretrained('CohereForAI/c4ai-command-r-v01')

>> # define documents:
>> documents = [
    { "title": "Tall penguins", "text": "Emperor penguins are the tallest." },
    { "title": "Penguin habitats", "text": "Emperor penguins only live in Antarctica."}
]
>> # define a conversation:
>> conversation = [
    {"role": "user", "content": "What's the biggest penguin in the world?"}
]
>> # render the prompt, ready for user to inspect, or for input into the model:
>> grounded_generation_prompt = tokenizer.apply_grounded_generation_template(conversation, documents=documents, tokenize=False, add_generation_prompt=True)
>> print(grounded_generation_prompt)
>> inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors='pt')
>> outputs = model.generate(inputs, max_new_tokens=128)
>> print(tokenizer.decode(outputs[0]))

apply_tool_use_template

< >

( conversation: listtools: list**kwargs ) → str

パラメータ

  • conversation (list[dict[str, str]]) — “role”キーと“content”キーを持つ辞書のリスト。これまでに蓄積されたチャット履歴を表します。
  • tools (list[Dict]) — モデルが選択できるようにプロンプトにレンダリングするツールのリストです。docstring の末尾に例があります。形式は以下の通りです:
    • name (str): 呼び出されるツールの名前。有効な名前は、a-z、A-Z、0-9、_ の文字のみで構成され、数字で始まることはできません。
    • description (str): ツールが何をするかを示す説明です。モデルはこの説明を参照して、関数をいつ、どのように呼び出すかを判断します。
    • パラメータ定義 (list[Dict]): ツールの入力パラメータ。キーがパラメータ名、値がパラメータ仕様である辞書を受け取ります。有効なパラメータ名には a-z、A-Z、0-9 の文字のみを含み、 数字で始まることはできません。パラメータ仕様は以下の通りです:
      • description (str): パラメータの説明。
      • type (str): パラメータの型 - 'str' や 'bool' などの Python 組み込みデータ型に対して最も効果的です
      • required: boolean: パラメータが常に存在する(必須)かどうかを示します。デフォルトでは必須ではありません。
  • add_generation_prompt (bool, 省略可) — プロンプトの末尾に、アシスタントメッセージの開始を示すトークンを付加するかどうかを指定します。モデルから応答を生成したい場合に有用です。この引数はチャットテンプレートに渡されるため、この引数が効果を発揮するには、テンプレート側でのサポートが必要です。
  • tokenize (bool、デフォルトはTrue) — 出力をトークン化するかどうかを指定します。Falseの場合、出力は文字列になります。
  • padding (bool、デフォルトは False) — シーケンスを最大長にパディングするかどうか。False の場合は無効です。
  • truncation (bool、デフォルトは False) — 最大長でシーケンスを切り詰めるかどうか。tokenize が False の場合は無効です。
  • max_length (int, 省略可) — パディングや切り詰めのために使用する最大長(トークン数)。tokenize が False の場合は無効です。指定しない場合、デフォルトとしてトークナイザーの max_length 属性が使用されます。
  • return_tensors (str または TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。tokenize が False. 指定可能な値は次のとおりです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': NumPyのnp.ndarrayオブジェクトを返します。
  • return_dict (bool、任意、デフォルトは False) — 名前付き出力を含む辞書を返すかどうか。False の場合は無効です。
  • **tokenizer_kwargs — トークナイザーに渡す追加の引数。

戻り値

str

レンダリングされたプロンプト文字列。 または、tokenize=Trueの場合: list[int]: これまでのトークン化されたチャットを表すトークンIDのリスト。制御トークンを含む。この出力は、generate()などのメソッドを介して、または直接モデルに渡す準備ができています。

Command-Rのツール使用プロンプトを作成します。

レンダリングが完了すると、プロンプトはモデルに指示し、ユーザーが提供したツールセットに対して実行すべきアクションのリストを生成させます。これにより、ユーザーのリクエストの実行を支援します。

概念的には、apply_chat_format と同じ仕組みで動作しますが、追加の tools パラメータを受け取ります。

"role"キーと"content"キーを持つ辞書のリスト形式のチャットと、モデルが使用する利用可能なツールのリストを、プロンプト文字列またはトークンIDのリストに変換します。 このメソッドは、クラスレベルで指定されたトークナイザーのdefault_tool_use_templateテンプレートを使用します。 tool_use_templateキーワード引数を使用してデフォルトのテンプレートをオーバーライドできますが、結果の品質が低下する可能性があります。

例:

>> tokenizer = CohereTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
>> tools = [
    {
        "name": "internet_search",
        "description": "Returns a list of relevant document snippets for a textual query retrieved from the internet",
        "parameter_definitions": {
            "query": {
                "description": "Query to search the internet with",
                "type": "str",
                "required": True,
            }
        },
    },
    {
        "name": "directly_answer",
        "description": "Calls a standard (un-augmented) AI chatbot to generate a response given the conversation history",
        "parameter_definitions": {},
    },
]
>> conversation = [
    {"role": "user", "content": "What's the biggest penguin in the world?"},
]
>> # Render the prompt, ready for user to inspect, or for input into the model
>> prompt = tokenizer.apply_tool_use_template(conversation, tools=tools, tokenize=False, add_generation_prompt=True)
>> print(prompt)
>> inputs = tokenizer.encode(grounded_generation_prompt, add_special_tokens=False, return_tensors='pt')
>> outputs = model.generate(inputs, max_new_tokens=128)
>> print(tokenizer.decode(outputs[0]))
[
    {
        "tool_name": "internet_search",
        "parameters": {
            "query": "biggest penguin in the world"
        }
    }
]

CohereModel

class transformers.CohereModel

< >

( config: CohereConfig )

パラメータ

  • config (CohereConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

特定のヘッドを付加せずに、生のhidden-statesを出力する素のCohere Model。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • position_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

BaseModelOutputWithPast または tuple(torch.FloatTensor)

torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPast。設定(CohereConfig)や入力に応じて、さまざまな要素で構成されます。

CohereModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。

    past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。

  • past_key_values (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己アテンションブロック(および config.is_encoder_decoder=True の場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます)— torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

CohereForCausalLM

クラス transformers.CohereForCausalLM

< >

( config: CohereConfig )

パラメータ

  • config (CohereConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

因果言語モデリング用のCohereモデル。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • position_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、shape (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., config.vocab_size] の範囲内であるか、-100 である必要があります(input_ids の docstring を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲内のラベルを持つトークンに対してのみ計算されます。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • logits_to_keep (Union[int, torch.Tensor]、省略可、デフォルトは 0) — int の場合、最後の logits_to_keep トークンについて logits を計算します。0 の場合、すべての input_ids について logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。 torch.Tensor の場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。

戻り値

CausalLMOutputWithPast または tuple(torch.FloatTensor)

torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または CausalLMOutputWithPast。設定(CohereConfig)や入力に応じて、さまざまな要素で構成されます。

CohereForCausalLMのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.FloatTensor、shape (1,)、optional、labels が指定された場合に返されます) — 言語モデリングの損失(次のトークン予測用)。

  • logits (torch.FloatTensor、shape (batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。

  • past_key_values (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    逐次デコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。

  • hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます)— torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>> from transformers import AutoTokenizer, CohereForCausalLM

>> model = CohereForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01")
>> tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")

>> prompt = "Hey, are you conscious? Can you talk to me?"
>> inputs = tokenizer(prompt, return_tensors="pt")

>> # Generate
>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
Update on GitHub