vigogne-2-7b-chat:基于Llama-2的法语对话大模型,优化生成连贯有帮助的对话响应

这是一个基于LLaMA-2-7B的法语聊天大模型,能生成有帮助且连贯的对话响应。V2.0版本在52万数据上训练,遵循Llama-2使用政策,支持多种推理方式。【此简介由AI生成】

分支3Tags0

license: llama2 language: fr pipeline_tag: text-generation inference: false tags:

  • LLM
  • llama-2
  • finetuned

Vigogne

Vigogne-2-7B-Chat-V2.0:基于Llama-2的法语对话大语言模型

Vigogne-2-7B-Chat-V2.0是一款基于LLaMA-2-7B的法语对话大语言模型,专门优化用于生成与用户对话时有用且连贯的回复。

更多信息请查阅我们的发布博客GitHub代码库

使用与许可声明: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 慷慨提供!

这些版本支持使用多种主流框架进行测试和开发,包括 AutoAWQvLLMAutoGPTQGPTQ-for-LLaMallama.cpptext-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。

Open In Colab

使用未量化模型配合 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仍处于开发阶段,存在许多亟待解决的局限性。请注意,该模型可能生成有害或带有偏见的内容、不准确的信息或总体上无用的回答。

项目介绍

这是一个基于LLaMA-2-7B的法语聊天大模型,能生成有帮助且连贯的对话响应。V2.0版本在52万数据上训练,遵循Llama-2使用政策,支持多种推理方式。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新