当前位置:   article > 正文

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

qwen2 instruct和base

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

目录

Qwen2的简介

1、新闻

2、性能

Qwen2的安装和使用方法

1、安装

2、模型使用方法

T1、采用Hugging Face Transformers

T2、采用ModelScope

3、模型推理

3.1、本地运行

T1、Ollama

T2、llama.cp

T3、MLX-LM

T4、LMStudio

T5、OpenVINO

3.2、Web UI

T1、文本生成 Web UI

T2、llamafile

4、模型部署

T1、vLLM

T2、SGLang

5、模型微调

6、Docker

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 的聊天模型:

  1. from transformers import AutoModelForCausalLM, AutoTokenizer
  2. model_name = "Qwen/Qwen2-7B-Instruct"
  3. device = "cuda" # the device to load the model onto
  4. model = AutoModelForCausalLM.from_pretrained(
  5. model_name,
  6. torch_dtype="auto",
  7. device_map="auto"
  8. )
  9. tokenizer = AutoTokenizer.from_pretrained(model_name)
  10. prompt = "Give me a short introduction to large language model."
  11. messages = [
  12. {"role": "system", "content": "You are a helpful assistant."},
  13. {"role": "user", "content": prompt}
  14. ]
  15. text = tokenizer.apply_chat_template(
  16. messages,
  17. tokenize=False,
  18. add_generation_prompt=True
  19. )
  20. model_inputs = tokenizer([text], return_tensors="pt").to(device)
  21. generated_ids = model.generate(
  22. **model_inputs,
  23. max_new_tokens=512
  24. )
  25. generated_ids = [
  26. output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
  27. ]
  28. 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、本地运行

本地运行

T1、Ollama

警告,你需要 ollama>=0.1.42。

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

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

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

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

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

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

  1. from openai import OpenAI
  2. client = OpenAI(
  3. base_url='http://localhost:11434/v1/',
  4. api_key='ollama', # required but ignored
  5. )
  6. chat_completion = client.chat.completions.create(
  7. messages=[
  8. {
  9. 'role': 'user',
  10. 'content': 'Say this is a test',
  11. }
  12. ],
  13. model='qwen2:7b',
  14. )

欲了解更多详情,请访问 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

T1、文本生成 Web UI

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

T2、llamafile

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

4、模型部署

部署

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:

  1. curl http://localhost:8000/v1/chat/completions \
  2. -H "Content-Type: application/json" \
  3. -d '{
  4. "model": "Qwen2-7B-Instruct",
  5. "messages": [
  6. {"role": "system", "content": "You are a helpful assistant."},
  7. {"role": "user", "content": "Tell me something about large language models."}
  8. ]
  9. }'
  1. curl http://localhost:8000/v1/chat/completions \
  2. -H "Content-Type: application/json" \
  3. -d '{
  4. "model": "Qwen2-7B-Instruct",
  5. "messages": [
  6. {"role": "system", "content": "You are a helpful assistant."},
  7. {"role": "user", "content": "Tell me something about large language models."}
  8. ]
  9. }'
  10. from openai import OpenAI
  11. # Set OpenAI's API key and API base to use vLLM's API server.
  12. openai_api_key = "EMPTY"
  13. openai_api_base = "http://localhost:8000/v1"
  14. client = OpenAI(
  15. api_key=openai_api_key,
  16. base_url=openai_api_base,
  17. )
  18. chat_response = client.chat.completions.create(
  19. model="Qwen2-7B-Instruct",
  20. messages=[
  21. {"role": "system", "content": "You are a helpful assistant."},
  22. {"role": "user", "content": "Tell me something about large language models."},
  23. ]
  24. )
  25. 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 中按如下所示使用它:

  1. from sglang import function, system, user, assistant, gen, set_default_backend, RuntimeEndpoint
  2. @function
  3. def multi_turn_question(s, question_1, question_2):
  4. s += system("You are a helpful assistant.")
  5. s += user(question_1)
  6. s += assistant(gen("answer_1", max_tokens=256))
  7. s += user(question_2)
  8. s += assistant(gen("answer_2", max_tokens=256))
  9. set_default_backend(RuntimeEndpoint("http://localhost:30000"))
  10. state = multi_turn_question.run(
  11. question_1="What is the capital of China?",
  12. question_2="List two local attractions.",
  13. )
  14. for m in state.messages():
  15. print(m["role"], ":", m["content"])
  16. print(state["answer_1"])

5、模型微调

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

训练

6、Docker

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

docker run --gpus all --ipc=host --network=host --rm --name qwen2 -it qwenllm/qwen:2-cu121 bash

Qwen2的案例应用

持续更新中……

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/758350
推荐阅读
相关标签
  

闽ICP备14008679号