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

Эта модель была добавлена в Hugging Face Transformers 15.03.2024.

FlashAttention SDPA Tensor parallelism

Cohere

Cohere Command-R — это многоязычная большая языковая модель с 35 млрд параметров, предназначенная для задач с длинным контекстом, таких как генерация с расширением за счёт поиска (RAG) и вызов внешних API и инструментов. Модель специально обучена для генерации, основанной на фактах, и поддерживает использование инструментов как в одношаговом, так и в многошаговом режиме. Поддерживаемая длина контекста составляет 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")

Квантование снижает нагрузку на память при работе с большими моделями, представляя веса в пониженной точности. Подробнее о доступных бэкендах квантования см. в обзоре Квантование.

Приведённый ниже пример использует 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")

Примечания

  • Не используйте параметр from_pretrained(), если вы используете FlashAttention-2, так как он поддерживает только fp16 или bf16. Вам следует использовать Automatic Mixed Precision, установить fp16 или bf16 в True при использовании Trainer или использовать torch.autocast.

CohereConfig

класс 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) — Коэффициент масштабирования выходных логитов.
  • num_hidden_layers (int, необязательный, по умолчанию 40) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 64) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • num_key_value_heads (int, необязательный) — Количество ключевых и value-голов, используемых для реализации Grouped Query Attention. Если num_key_value_heads=num_attention_heads, модель использует Multi Head Attention (MHA); если num_key_value_heads=1 — Multi Query Attention (MQA); в остальных случаях применяется GQA. При конвертации мультиголовного чекпоинта в GQA-чекпоинт каждая групповая ключевая и value-голова должна построиться путём усреднения (meanpooling) всех исходных голов в этой группе. Дополнительные сведения см. в этой статье. Если параметр не задан, по умолчанию используется 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) — Идентификатор токена, используемого для дополнения (padding) в словаре.
  • bos_token_id (int, необязательный, по умолчанию 5) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный, по умолчанию 255001) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. Словарь должен содержать значение для rope_theta и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными max_position_embeddings.
  • attention_bias (bool, необязательный, по умолчанию False) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • use_qk_norm (bool, необязательный, по умолчанию False) — Использовать ли нормализацию query-key в механизме внимания.

Это класс конфигурации для хранения настроек 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, необязательный) — Путь к файлу слияний.
  • tokenizer_file (str, необязательный) — файл 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 or 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]]) — список словарей, представляющих документы или результаты инструментов, на основе которых будет строиться генерация. Документ — это полуструктурированный словарь с сопоставлением строк. Типичные поля — url, title, snippet и т. д., но ключи должны быть описательными. Эти данные будут включены в промпт.
  • citation_mode — принимает значение «accurate» (модель сначала генерирует ответ, а затем переписывает его, добавляя цитаты) или «fast» (модель сразу генерирует ответ с цитатами). Первый вариант обеспечивает более высокое качество цитирования, второй требует генерации меньшего количества токенов.
  • add_generation_prompt (bool, необязательный) — Указывает, нужно ли завершать промпт токеном (токенами), обозначающим начало сообщения ассистента. Это полезно, когда вы хотите сгенерировать ответ модели. Обратите внимание, что этот аргумент передается в шаблон чата, поэтому для того чтобы он имел эффект, шаблон должен его поддерживать.
  • tokenize (bool, по умолчанию True) — Определяет, следует ли токенизировать вывод. Если False, выводом будет строка.
  • padding (bool, по умолчанию False) — Определяет, нужно ли дополнять последовательности до максимальной длины. Не имеет эффекта, если tokenize равно False.
  • truncation (bool, по умолчанию False) — Определяет, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равно False.
  • max_length (int, необязательный) — Максимальная длина (в токенах), используемая для дополнения или усечения. Не влияет на результат, если tokenize равно False. Если значение не указано, по умолчанию будет использован атрибут max_length токенизатора.
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Не имеет эффекта, если tokenize — False. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.
  • return_dict (bool, необязательный, по умолчанию False) — Определяет, следует ли возвращать словарь с именованными результатами. Не имеет значения, если tokenize установлен в False.
  • **tokenizer_kwargs — Дополнительные аргументы для передачи в токенизатор.

Возвращает

str

Строка с отрендеренным промптом. или если tokenize=True: list[int]: список идентификаторов токенов, представляющих токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, напрямую или через методы вроде generate().

Создайте промпт для генерации с опорой на контекст (также известный как RAG) для модели Command-R.

После рендеринга промпт указывает модели сгенерировать ответ со ссылками на предоставленные документы.

Концептуально это работает так же, как apply_chat_format, но принимает дополнительные documents и параметр citation_mode.

Преобразует список словарей с ключами "role" и "content" и список документов, на которые модель должна опираться при формировании ответа, в строку-запрос или список идентификаторов токенов. Этот метод использует шаблон 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): Описание того, что делает инструмент. Модель использует это описание, чтобы решить, когда и как вызывать функцию.
    • параметрdefinitions (list[Dict]): входные параметры инструмента. Принимает словарь, где ключ — имя параметра, а значение — спецификация параметра. Допустимые имена параметров содержат только символы a-z, A-Z, 0-9, и не могут начинаться с цифры. Спецификации параметров выглядят следующим образом:
      • description (str): Описание параметра.
      • type (str): тип параметра — наиболее эффективно для встроенных типов данных Python, таких как ‘str’, ‘bool’
      • required: boolean: Указывает, является ли параметр обязательным (всегда присутствует) или нет. По умолчанию параметр не является обязательным.
  • add_generation_prompt (bool, необязательный) — Указывает, нужно ли завершать промпт токеном (токенами), обозначающим начало сообщения ассистента. Это полезно, когда вы хотите сгенерировать ответ модели. Обратите внимание, что этот аргумент передается в шаблон чата, поэтому для того чтобы он имел эффект, шаблон должен его поддерживать.
  • tokenize (bool, по умолчанию True) — Определяет, следует ли токенизировать вывод. Если False, выводом будет строка.
  • padding (bool, по умолчанию False) — Определяет, нужно ли дополнять последовательности до максимальной длины. Не имеет эффекта, если tokenize равно False.
  • truncation (bool, по умолчанию False) — Определяет, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равно False.
  • max_length (int, необязательный) — Максимальная длина (в токенах), используемая для дополнения или усечения. Не влияет на результат, если tokenize равно False. Если значение не указано, по умолчанию будет использован атрибут max_length токенизатора.
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Не имеет эффекта, если tokenize — False. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.
  • return_dict (bool, необязательный, по умолчанию False) — Определяет, следует ли возвращать словарь с именованными результатами. Не имеет значения, если tokenize установлен в False.
  • **tokenizer_kwargs — Дополнительные аргументы для передачи в токенизатор.

Возвращает

str

Строка с отрендеренным промптом. или если tokenize=True: list[int]: список идентификаторов токенов, представляющих токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, напрямую или через методы вроде generate().

Создайте промпт для использования инструментов в Command-R.

После рендеринга промпт указывает модели сгенерировать список действий, которые необходимо выполнить с помощью набора инструментов, предоставленных пользователем, чтобы помочь выполнить запросы пользователя.

Концептуально это работает так же, как apply_chat_format, но принимает дополнительный параметр tools.

Преобразует чат, представленный в виде списка словарей с ключами "role" и "content", и список доступных инструментов, которыми может пользоваться модель, в строку-промпт или список идентификаторов токенов. Этот метод использует шаблон 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

класс transformers.CohereModel

< >

( config: CohereConfig )

Параметры

  • config (CohereConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Базовая модель Cohere, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • 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].

    Что такое идентификаторы позиций?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

BaseModelOutputWithPast или tuple(torch.Tensor)

Объект BaseModelOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (CohereConfig) и входных данных.

Метод CohereModel forward переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (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.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и, при необходимости, если config.is_encoder_decoder=True, в блоках кросс-внимания), которые можно использовать (см. входной параметр past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

CohereForCausalLM

класс transformers.CohereForCausalLM

< >

( config: CohereConfig )

Параметры

  • config (CohereConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель Cohere для каузального языкового моделирования.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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.Tensor] = 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.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • 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].

    Что такое идентификаторы позиций?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне [0, ..., config.vocab_size] или быть равны -100 (см. docstring input_ids). Токены с индексами, установленными в -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 для последних logits_to_keep токенов. Если указано 0, logits вычисляются для всех input_ids (особый случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типа torch.Tensor, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (один размер для batch и длины последовательности).

Возвращает

CausalLMOutputWithPast или tuple(torch.Tensor)

Объект CausalLMOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (CohereConfig) и входных данных.

Метод CohereForCausalLM forward переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери языковой модели (для предсказания следующего токена).

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (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