首页
PG电子平台訫98db介绍
产品展示
新闻动态
栏目分类

新闻动态

你的位置:PG电子平台訫98db > 新闻动态 > LLMs之Qwen2:Qwen2的简介、安装和使用方法、案例应用之详细攻略

LLMs之Qwen2:Qwen2的简介、安装和使用方法、案例应用之详细攻略

发布日期:2025-03-07 14:32    点击次数:170

LLMs之Qwen2:Qwen2的简介、安装和使用方法、案例应用之详细攻略

Qwen2的简介

2024年6月6日,发布Qwen2,Qwen2是从Qwen1.5进化而来,提供五种规模的预训练和指令微调模型(0.5B、1.5B、7B、57B-A14B和72B),支持多达27种语言,具有顶尖的基准测试性能,在编码和数学方面显著提升,并扩展了Qwen2-7B-Instruct和Qwen2-72B-Instruct模型的上下文长度至128K tokens,同时支持工具调用、RAG、角色扮演和AI Agent等功能。

经过数月的努力,我们很高兴地宣布从 Qwen1.5 进化到 Qwen2。这次,我们为您带来了: >> 五种规模的预训练和指令微调模型,包括 Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B 和 Qwen2-72B;针对每种尺寸提供基础模型和指令微调模型,并确保指令微调模型按照人类偏好进行校准; >> 基础模型和指令微调模型的多语言支持;除英语和中文外,还训练了27种额外语言的数据; >> 在大量基准评估中表现优异,编码和数学性能显著提升;支持工具调用、RAG(检索增强文本生成)、角色扮演、AI Agent等; >> 所有模型均稳定支持32K长度上下文;Qwen2-7B-Instruct与Qwen2-72B-Instruct可支持128K上下文(需额外配置)。Qwen2-7B-Instruct 和 Qwen2-72B-Instruct 支持最长 128K tokens 的上下文长度。

官网地址:Qwen

Github地址:GitHub - QwenLM/Qwen2: Qwen2 is the large language model series developed by Qwen team, Alibaba Cloud.

1、新闻

2024.06.06:我们发布了 Qwen2 系列。查看我们的博客!

2024.03.28:我们发布了 Qwen 的首个 MoE 模型:Qwen1.5-MoE-A2.7B!暂时只有 HF transformers 和 vLLM 支持该模型。我们将很快添加对 llama.cpp、mlx-lm 等的支持。查看我们的博客以获取更多信息!

2024.02.05:我们发布了 Qwen1.5 系列。

2、性能

更新中……

图片

Qwen2的安装和使用方法 1、安装

Qwen2 密集和 MoE 模型需要 transformers>=4.40.0。建议使用最新版本。

警告,这是必需的,因为 transformers 从 4.37.0 开始集成了 Qwen2 代码,从 4.40.0 开始集成了 Qwen2Moe 代码。

关于 GPU 内存要求和相应的吞吐量,见此处的结果。

2、模型使用方法 T1、采用Hugging Face Transformers

这里我们展示了一段代码片段,展示了如何使用 transformers 的聊天模型:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/Qwen2-7B-Instruct"
device = "cuda" # the device to load the model onto

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

prompt = "Give me a short introduction to large language model."
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

对于量化模型,我们建议使用 GPTQ 和 AWQ 对应的模型,即 Qwen2-7B-Instruct-GPTQ-Int8 和 Qwen2-7B-Instruct-AWQ。

T2、采用ModelScope

我们强烈建议用户,特别是中国大陆的用户,使用 ModelScope。snapshot_download 可以帮助您解决下载检查点的问题。

3、模型推理 3.1、本地运行

本地运行

llama.cppMLX-LMOllama T1、Ollama

警告,你需要 ollama>=0.1.42。

注意,Ollama 提供了一个与 OpenAI 兼容的 API,但不支持函数调用。对于工具使用功能,考虑使用 Qwen-Agent,它为 API 上的函数调用提供了一个包装器。

安装 ollama 后,可以用以下命令启动 ollama 服务:

ollama serve
# 在使用 ollama 时需要保持此服务运行

要拉取模型检查点并运行模型,请使用 ollama run 命令。你可以通过在 qwen2 后添加后缀来指定模型大小,如 :0.5b、:1.5b、:7b 或 :72b:

ollama run qwen2:7b
# 要退出,请输入 "/bye" 并按回车

你还可以通过其 OpenAI 兼容 API 访问 ollama 服务。请注意,您需要(1)在使用 API 时保持 ollama serve 运行,(2)在使用此 API 之前执行 ollama run qwen2:7b 以确保模型检查点已准备就绪。

from openai import OpenAI
client = OpenAI(
    base_url='http://localhost:11434/v1/',
    api_key='ollama',  # required but ignored
)
chat_completion = client.chat.completions.create(
    messages=[
        {
            'role': 'user',
            'content': 'Say this is a test',
        }
    ],
    model='qwen2:7b',
)

欲了解更多详情,请访问 ollama.ai。

T2、llama.cp

下载我们提供的 GGUF 文件或自行创建,然后可以直接使用最新的 llama.cpp 运行以下命令:

./main -m <path-to-file> -n 512 --color -i -cml -f prompts/chat-with-qwen.txt

如果遇到 GPU 上量化模型的问题,请尝试传递 -fa 参数以在最新版本的 llama.cpp 中启用 flash attention 实现。

T3、MLX-LM

如果你在使用 Apple Silicon,我们也提供了兼容 mlx-lm 的检查点。在 HuggingFace Hub 上查找以 MLX 结尾的模型,如 Qwen2-7B-Instruct-MLX。

T4、LMStudio

Qwen2 已被 lmstudio.ai 支持。你可以直接使用 LMStudio 和我们的 GGUF 文件。

T5、OpenVINO

Qwen2 已被 OpenVINO 工具包支持。你可以安装并运行这个聊天机器人示例,使用 Intel CPU、集成 GPU 或独立 GPU。

3.2、Web UI

WEB UI

Text Generation Web UI T1、文本生成 Web UI

你可以直接使用 text-generation-webui 创建一个 Web UI 演示。如果使用 GGUF,记得安装支持 Qwen2 的最新 llama.cpp 轮子。

T2、llamafile

克隆 llamafile,运行 source install,然后按照指南使用 GGUF 文件创建你自己的 llamafile。你可以运行一行命令,比如 ./qwen.llamafile,创建一个演示。

4、模型部署

部署

vLLMTGISkyPilot

Qwen2 受多个推理框架支持。这里我们演示了 vLLM 和 SGLang 的使用。

警告,vLLM 和 SGLang 提供的 OpenAI 兼容 API 目前不支持函数调用。对于工具使用功能,Qwen-Agent 提供了一个围绕这些 API 的包装器,以支持函数调用。

T1、vLLM

我们建议使用 vLLM>=0.4.0 构建 OpenAI 兼容 API 服务。使用聊天模型启动服务器,例如 Qwen2-7B-Instruct:

python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-7B-Instruct --model Qwen/Qwen2-7B-Instruct

然后按照下面的示例使用 chat API:

curl http://localhost:8000/v1/chat/completions     -H "Content-Type: application/json"     -d '{
    "model": "Qwen2-7B-Instruct",
    "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me something about large language models."}
    ]
    }'
curl http://localhost:8000/v1/chat/completions     -H "Content-Type: application/json"     -d '{
    "model": "Qwen2-7B-Instruct",
    "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me something about large language models."}
    ]
    }'
from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

chat_response = client.chat.completions.create(
    model="Qwen2-7B-Instruct",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Tell me something about large language models."},
    ]
)
print("Chat response:", chat_response)
T2、SGLang

注意,SGLang 目前不支持 Qwen2MoeForCausalLM 架构,因此 Qwen2-57B-A14B 不兼容。

请从源代码安装 SGLang。类似于 vLLM,你需要启动服务器并使用 OpenAI 兼容的 API 服务。首先启动服务器:

python -m sglang.launch_server --model-path Qwen/Qwen2-7B-Instruct --port 30000

你可以在 Python 中按如下所示使用它:

from sglang import function, system, user, assistant, gen, set_default_backend, RuntimeEndpoint

@function
def multi_turn_question(s, question_1, question_2):
    s += system("You are a helpful assistant.")
    s += user(question_1)
    s += assistant(gen("answer_1", max_tokens=256))
    s += user(question_2)
    s += assistant(gen("answer_2", max_tokens=256))

set_default_backend(RuntimeEndpoint("http://localhost:30000"))

state = multi_turn_question.run(
    question_1="What is the capital of China?",
    question_2="List two local attractions.",
)

for m in state.messages():
    print(m["role"], ":", m["content"])

print(state["answer_1"])
5、模型微调

我们建议使用包括 Axolotl、Llama-Factory、Swift 等训练框架,以使用 SFT、DPO、PPO 等进行模型微调。

训练

有监督微调 示例LLaMA-Factory 6、Docker

为简化部署过程,我们提供了带有预构建环境的 Docker 镜像:qwenllm/qwen。你只需要安装驱动程序并下载模型文件,即可启动演示和微调模型。

docker run --gpus all --ipc=host --network=host --rm --name qwen2 -it qwenllm/qwen:2-cu121 bash
Qwen2的案例应用

持续更新中……

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。