Transformers documentation
Cohere
تمت مساهمة هذا النموذج في Hugging Face Transformers في 15 مارس 2024.
Cohere
نموذج Command-R من Cohere هو نموذج لغة كبير متعدد اللغات يحتوي على 35 مليار معامل، مصمم لمهام السياق الطويل مثل التوليد المعزز بالاسترجاع (RAG) واستدعاء واجهات برمجة التطبيقات والأدوات الخارجية. تم تدريب النموذج خصيصًا للتوليد الموثوق، ويدعم استخدام الأدوات في خطوة واحدة وفي عدة خطوات. كما يدعم طول سياق يبلغ 128 ألف رمز.
يمكنك العثور على جميع نقاط التفتيش الأصلية لـ 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")
ملاحظات
- لا تستخدم معامل dtype في 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) — عامل المقياس الخاص بـ logits الناتجة. - num_hidden_layers (
int, اختياري، القيمة الافتراضية40) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية64) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_key_value_heads (
int, اختياري) — هذا هو عدد رؤوس key_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، يجب بناء كل مجموعة من رؤوس key و 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) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - use_cache (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - pad_token_id (
int، اختياري، القيمة الافتراضية0) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int، اختياري، القيمة الافتراضية5) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]]، اختياري، القيمة الافتراضية255001) — معرّف الرمز المستخدم لنهاية البث في المفردات. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطةtied_weights_keysالخاصة بالنموذج. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قائمة تحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن تحتوي القائمة على قيمة لـrope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE معmax_position_embeddingsأطول. - attention_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - 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.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>") — رمز غير معروف. أي رمز غير موجود في المفردات لا يمكن تحويله إلى معرّف، فيتم تعيينه ليكون هذا الرمز بدلاً من ذلك. - 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. يعتمد على ترميز زوج البايت على مستوى البايت.
يستخدم هذا بشكل ملحوظ 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وما إلى ذلك، لكن يجب أن تكون الأوصافية للمفتاح. سيتم عرضها في الأمر (prompt). - 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': إرجاع كائناتnp.ndarrayمن NumPy.
- return_dict (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هوFalse. - **tokenizer_kwargs — معاملات إضافية تُمرَّر إلى مُجزِّئ النص.
يعيد
str
A rendered prompt string.
or if tokenize=True:
list[int]: A list of token ids representing the tokenized chat so far, including control tokens. This
output is ready to pass to the model, either directly or via methods like generate().
أنشئ موجهًا لتوليد مبنٍ على Command-R (المعروف أيضًا بـ RAG).
بعد العرض، يوجّه الأمر النموذج إلى توليد ردّ يتضمن استشهادات، استنادًا إلى المستندات المُقدَّمة.
من حيث المفهوم، يعمل هذا بنفس طريقة apply_chat_format، لكنه يستقبل documents إضافية ومعامل citation_mode.
يحوّل قائمة من القواميس التي تحتوي على مفاتيح "role" و"content" وقائمة من المستندات التي يستند إليها النموذج في صياغة ردّه، إلى نصّ موجه (prompt) أو إلى قائمة من معرّفات الرموز (token ids).
تستخدم هذه الطريقة قالب 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 (قائمة من الأدوات التي تُعرض في المُوجِّه (prompt) ليختار منها النموذج.
راجع مثالاً في أسفل سلسلة التوثيق (docstring).
يجب أن يكون التنسيق على النحو التالي:
- name (str): اسم الأداة التي سيتم استدعاؤها. تحتوي الأسماء الصالحة على الأحرف a-z و A-Z و 0-9 و _ فقط، ولا يجوز أن تبدأ برقم.
- description (str): وصف ما يقوم به الأداة، حيث يستخدم النموذج هذا الوصف لاختيار متى وكيف يستدعي الدالة.
- معاملتعريفات (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': إرجاع كائناتnp.ndarrayمن NumPy.
- return_dict (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هوFalse. - **tokenizer_kwargs — معاملات إضافية تُمرَّر إلى مُجزِّئ النص.
يعيد
str
A rendered prompt string.
or if tokenize=True:
list[int]: A list of token ids representing the tokenized chat so far, including control tokens. This
output is ready to pass to the model, either directly or via methods like generate().
أنشئ موجهًا لاستخدام الأدوات في Command-R.
بمجرد عرض الأمر، يوجّه النموذج إلى توليد قائمة من الإجراءات التي يجب تنفيذها على مجموعة من الأدوات التي يوفّرها المستخدم، للمساعدة في تلبية طلبات المستخدم.
من حيث المفهوم، يعمل هذا بالطريقة نفسها التي يعمل بها apply_chat_format، لكنه يستقبل معاملًا إضافيًا هو tools.
يحوّل محادثة على شكل قائمة من القواميس التي تحتوي على مفاتيح "role" و"content"، وقائمة بالأدوات المتاحة للنموذج لاستخدامها، إلى نصّ موجه (prompt string) أو قائمة من معرّفات الرموز (token ids).
تستخدم هذه الطريقة قالب default_tool_use_template الافتراضي للمرمّز (tokenizer) المحدّد على مستوى الفئة.
يمكنك تجاوز القالب الافتراضي باستخدام معامل 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), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام 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 أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (CohereConfig) والمدخلات.
تتجاوز طريقة CohereModel الأمامية الطريقة الخاصة __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)، اختياري، يُعاد عند تمرير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), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام 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 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-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، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).
يعيد
CausalLMOutputWithPast أو tuple(torch.Tensor)
CausalLMOutputWithPast أو مجموعة (tuple) من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (CohereConfig) والمدخلات.
تتجاوز طريقة CohereForCausalLM الخاصة بـ forward الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(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)، اختياري، يُعاد عند تمرير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."