这是一个基于LLaMA-2-7B的法语聊天大模型,能生成有帮助且连贯的对话响应。V2.0版本在52万数据上训练,遵循Llama-2使用政策,支持多种推理方式。【此简介由AI生成】
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
license: llama2 language: fr pipeline_tag: text-generation inference: false tags:
- LLM
- llama-2
- finetuned
Vigogne-2-7B-Chat-V2.0:基于Llama-2的法语对话大语言模型
Vigogne-2-7B-Chat-V2.0是一款基于LLaMA-2-7B的法语对话大语言模型,专门优化用于生成与用户对话时有用且连贯的回复。
使用与许可声明:Vigogne-2-7B-Chat-V2.0遵循Llama-2的使用政策。训练数据中的大部分内容提炼自GPT-3.5-Turbo和GPT-4,请谨慎使用以避免违反OpenAI的使用条款。
更新日志
所有历史版本均可通过分支访问。
- V1.0:基于42万条对话数据训练
- V2.0:基于52万条数据训练。详情请参阅发布博客
提示词模板
我们采用前缀标记<user>:和<assistant>:来区分用户与助手的对话内容。
您可以通过apply_chat_template()方法使用对话模板功能来实现这种格式化。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bofenghuang/vigogne-2-7b-chat")
conversation = [
{"role": "user", "content": "Bonjour ! Comment ça va aujourd'hui ?"},
{"role": "assistant", "content": "Bonjour ! Je suis une IA, donc je n'ai pas de sentiments, mais je suis prêt à vous aider. Comment puis-je vous assister aujourd'hui ?"},
{"role": "user", "content": "Quelle est la hauteur de la Tour Eiffel ?"},
{"role": "assistant", "content": "La Tour Eiffel mesure environ 330 mètres de hauteur."},
{"role": "user", "content": "Comment monter en haut ?"},
]
print(tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=True))
您将获得
<s><|system|>: Vous êtes Vigogne, un assistant IA créé par Zaion Lab. Vous suivez extrêmement bien les instructions. Aidez autant que vous le pouvez.
<|user|>: Bonjour ! Comment ça va aujourd'hui ?
<|assistant|>: Bonjour ! Je suis une IA, donc je n'ai pas de sentiments, mais je suis prêt à vous aider. Comment puis-je vous assister aujourd'hui ?</s>
<|user|>: Quelle est la hauteur de la Tour Eiffel ?
<|assistant|>: La Tour Eiffel mesure environ 330 mètres de hauteur.</s>
<|user|>: Comment monter en haut ?
<|assistant|>:
使用方式
使用量化版本进行推理
本模型的量化版本由 TheBloke 慷慨提供!
- 适用于 GPU 推理的 AWQ 版本:TheBloke/Vigogne-2-7B-Chat-AWQ
- 适用于 GPU 推理的 GTPQ 版本:TheBloke/Vigogne-2-7B-Chat-GPTQ
- 适用于 CPU+GPU 混合推理的 GGUF 版本:TheBloke/Vigogne-2-7B-Chat-GGUF
这些版本支持使用多种主流框架进行测试和开发,包括 AutoAWQ、vLLM、AutoGPTQ、GPTQ-for-LLaMa、llama.cpp、text-generation-webui 等。
使用 🤗 Transformers 运行未量化模型推理
from typing import Dict, List, Optional
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig, TextStreamer
model_name_or_path = "bofenghuang/vigogne-2-7b-chat"
revision = "v2.0"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, revision=revision, padding_side="right", use_fast=False)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, revision=revision, torch_dtype=torch.float16, device_map="auto")
streamer = TextStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)
def chat(
query: str,
history: Optional[List[Dict]] = None,
temperature: float = 0.7,
top_p: float = 1.0,
top_k: float = 0,
repetition_penalty: float = 1.1,
max_new_tokens: int = 1024,
**kwargs,
):
if history is None:
history = []
history.append({"role": "user", "content": query})
input_ids = tokenizer.apply_chat_template(history, add_generation_prompt=True, return_tensors="pt").to(model.device)
input_length = input_ids.shape[1]
generated_outputs = model.generate(
input_ids=input_ids,
generation_config=GenerationConfig(
temperature=temperature,
do_sample=temperature > 0.0,
top_p=top_p,
top_k=top_k,
repetition_penalty=repetition_penalty,
max_new_tokens=max_new_tokens,
pad_token_id=tokenizer.eos_token_id,
**kwargs,
),
streamer=streamer,
return_dict_in_generate=True,
)
generated_tokens = generated_outputs.sequences[0, input_length:]
generated_text = tokenizer.decode(generated_tokens, skip_special_tokens=True)
history.append({"role": "assistant", "content": generated_text})
return generated_text, history
# 1st round
response, history = chat("Un escargot parcourt 100 mètres en 5 heures. Quelle est sa vitesse ?", history=None)
# 2nd round
response, history = chat("Quand il peut dépasser le lapin ?", history=history)
# 3rd round
response, history = chat("Écris une histoire imaginative qui met en scène une compétition de course entre un escargot et un lapin.", history=history)
您也可以使用下方提供的 Google Colab Notebook。
使用未量化模型配合 vLLM 进行推理
通过以下命令设置兼容 OpenAI 的服务器:
# Install vLLM
# This may take 5-10 minutes.
# pip install vllm
# Start server for Vigogne-Chat models
python -m vllm.entrypoints.openai.api_server --model bofenghuang/vigogne-2-7b-chat
# List models
# curl http://localhost:8000/v1/models
使用 openai Python 包查询模型。
import openai
# Modify OpenAI's API key and API base to use vLLM's API server.
openai.api_key = "EMPTY"
openai.api_base = "http://localhost:8000/v1"
# First model
models = openai.Model.list()
model = models["data"][0]["id"]
# Chat completion API
chat_completion = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "user", "content": "Parle-moi de toi-même."},
],
max_tokens=1024,
temperature=0.7,
)
print("Chat completion results:", chat_completion)
局限性
Vigogne仍处于开发阶段,存在许多亟待解决的局限性。请注意,该模型可能生成有害或带有偏见的内容、不准确的信息或总体上无用的回答。