Transformers documentation
Cohere
Эта модель была добавлена в Hugging Face Transformers 15.03.2024.
Cohere
Cohere Command-R — это многоязычная большая языковая модель с 35 млрд параметров, предназначенная для задач с длинным контекстом, таких как генерация с расширением за счёт поиска (RAG) и вызов внешних API и инструментов. Модель специально обучена для генерации, основанной на фактах, и поддерживает использование инструментов как в одношаговом, так и в многошаговом режиме. Поддерживаемая длина контекста составляет 128K токенов.
Все исходные контрольные точки Command-R можно найти в коллекции Command Models.
Щёлкните по моделям Cohere в боковой панели справа, чтобы увидеть больше примеров применения Cohere к различным языковым задачам.
Приведённый ниже пример показывает, как генерировать текст с помощью Pipeline или AutoModel, а также из командной строки.
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")from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")
model = AutoModelForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01", device_map="auto", 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))# pip install -U flash-attn --no-build-isolation
transformers chat CohereForAI/c4ai-command-r-v01 --dtype auto --attn_implementation flash_attention_2Квантование снижает нагрузку на память при работе с большими моделями, представляя веса в пониженной точности. Подробнее о доступных бэкендах квантования см. в обзоре Квантование.
Приведённый ниже пример использует 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
< source >( 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.configCohereTokenizer
класс transformers.CohereTokenizer
< source >( 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,dictorlist, необязательный) — Пользовательский словарь. Если не указан, словарь загружается из 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
< source >( 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.TensorPyTorch.'np': возвращает объекты NumPynp.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
< source >( 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.TensorPyTorch.'np': возвращает объекты NumPynp.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
< source >( config: CohereConfig )
Параметры
- config (CohereConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Базовая модель Cohere, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( config: CohereConfig )
Параметры
- config (CohereConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Cohere для каузального языкового моделирования.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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 (см. docstringinput_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."