16 篇文章带有标签 “Qwen”

vLLM:快速易用的 LLM 推理和服务库

在下载前,请先通过如下命令安装 ModelScope

pip install modelscope

ModelScope 下载默认存储到 ~/.cache/modelscope/hub(Linux/macOS)或 C:\Users<用户名>.cache\modelscope\hub(Windows)。--local_dir 参数可以指定下载目录。

modelscope download --model Qwen/Qwen2.5-VL-7B-Instruct --local_dir Qwen2.5-VL-7B-Instruct
modelscope download --model openai-mirror/whisper-large-v3-turbo --local_dir whisper-large-v3-turbo

探索多模态大模型 Qwen2.5-VL

本文档提供了一篇关于Qwen2.5-VL 多模态大模型的详细指南,涵盖了从模型架构、性能到实际部署和使用的各个方面。它不仅介绍了如何下载不同版本(如 3B 和 7B Instruct)的模型,还提供了安装和启动模型的命令行指令。此外,文档还展示了如何通过 cURL 命令测试模型,并给出了一个使用 OpenAI API 与 Qwen2.5-VL 进行交互的 Python 示例代码,该代码专注于图像中的火灾、烟雾和安全帽佩戴情况检测,支持本地和网络图片。

在下载前,请先通过如下命令安装 ModelScope

pip install modelscope
modelscope download --model Qwen/Qwen2.5-VL-3B-Instruct --local_dir Qwen2.5-VL-3B-Instruct
modelscope download --model Qwen/Qwen2.5-VL-7B-Instruct --local_dir Qwen2.5-VL-7B-Instruct

默认存储到 ~/.cache/modelscope/hub(Linux/macOS)或 C:\Users<用户名>.cache\modelscope\hub(Windows)。--local_dir 参数可以指定下载目录。

Qwen2.5-Omni:端到端多模态大模型

Qwen2.5-Omni是Qwen系列中全新的旗舰级端到端多模态大模型,专为全面的多模式感知设计,无缝处理包括文本、图像、音频和视频在内的各种输入,同时支持流式的文本生成和自然语音合成输出。

点击下方视频了解更多信息吧 😃

Open Video

  • 全能创新架构:我们提出了一种全新的Thinker-Talker架构,这是一种端到端的多模态模型,旨在支持文本/图像/音频/视频的跨模态理解,同时以流式方式生成文本和自然语音响应。我们提出了一种新的位置编码技术,称为TMRoPE(Time-aligned Multimodal RoPE),通过时间轴对齐实现视频与音频输入的精准同步。
  • 实时音视频交互:架构旨在支持完全实时交互,支持分块输入和即时输出。
  • 自然流畅的语音生成:在语音生成的自然性和稳定性方面超越了许多现有的流式和非流式替代方案。
  • 全模态性能优势:在同等规模的单模态模型进行基准测试时,表现出卓越的性能。Qwen2.5-Omni在音频能力上优于类似大小的Qwen2-Audio,并与Qwen2.5-VL-7B保持同等水平。
  • 卓越的端到端语音指令跟随能力:Qwen2.5-Omni在端到端语音指令跟随方面表现出与文本输入处理相媲美的效果,在MMLU通用知识理解和GSM8K数学推理等基准测试中表现优异。
git clone https://huggingface.co/Qwen/Qwen2.5-Omni-3B

大模型实战评测:语言 vs 推理 vs 代码

模型类型 模型 评估结果
语言模型 Qwen2.5-0.5B
Qwen2.5-1.5B
Qwen2.5-7B
Qwen2.5-14B-Instruct
Qwen2.5-32B-Instruct
推理模型 DeepSeek-R1-Distill-Qwen2.5-1.5B
DeepSeek-R1-Distill-Qwen2.5-7B
DeepSeek-R1-Distill-Qwen2.5-14B
DeepSeek-R1-Distill-Qwen2.5-32B
Qwen/QwQ-32B
Qwen/QwQ-32B-Preview
Qwen/QwQ-32B-AWQ
代码模型 Qwen2.5-Coder-0.5B
Qwen2.5-Coder-1.5B
Qwen2.5-Coder-3B

对于这样的阅读理解任务,推理模型的表现要反而不如语言模型和代码模型,通过分析发现在思考的过程可能会出错而导致答案错误。对于大参数模型,进行了量化会导致模型性能下降,如:Qwen/QwQ-32B-AWQ。

  • Qwen2.5-0.5B ❌

  • Qwen2.5-1.5B ✅

  • Qwen2.5-7B ✅

  • Qwen2.5-14B-Instruct ✅

  • Qwen2.5-32B-Instruct ✅

  • DeepSeek-R1-Distill-Qwen2.5-1.5B ❌

Qwen2.5-VL Technical Report

We introduce Qwen2.5-VL, the latest flagship model of Qwen vision-language series, which demonstrates significant advancements in both foundational capabilities and innovative functionalities. Qwen2.5-VL achieves a major leap forward in understanding and interacting with the world through enhanced visual recognition, precise object localization, robust document parsing, and long-video comprehension. A standout feature of Qwen2.5-VL is its ability to localize objects using bounding boxes or points accurately.

使用大型语言模型微调命名实体识别

定义了一套电力领域的命名实体类型:

  • Province: 省份。例如:山东省。
  • City: 城市。例如:济南市、济南。
  • Company: 供电公司。例如:长清区供电公司、市中供电中心。
  • Substation: 供电所。例如:崮山供电所。
  • Indicator: 指标。例如:投诉、意见。
  • Date: 日期。例如:今天、昨天、今年、去年、本周、上周、本月、上月、3月、本季度、上季度、一季度、今年第一季度、2022年、2024年5月。

对用户的输入进行命名实体识别标注,输出的结果应该包含所有的电力领域实体类型的实例。

  • 山东省菏泽巨野县供电公司麒麟供电所投诉数量

<Province>山东省</Province><City>菏泽</City><Company>巨野县供电公司</Company><Substation>麒麟供电所</Substation><Indicator>投诉</Indicator>数量

  • 菏泽巨野县供电公司麒麟供电所投诉数量

<City>菏泽</City><Company>巨野县供电公司</Company><Substation>麒麟供电所</Substation><Indicator&gt

使用大型语言模型微调命名实体识别生成

定义了一套电力领域的命名实体类型:

  • Province: 省份。例如:山东省。
  • City: 城市。例如:济南市、济南。
  • Company: 供电公司。例如:长清区供电公司、市中供电中心。
  • Substation: 供电所。例如:崮山供电所。
  • Indicator: 指标。例如:投诉、意见。
  • Date: 日期。例如:今天、昨天、今年、去年、本周、上周、本月、上月、3月、本季度、上季度、一季度、今年第一季度、2022年、2024年5月。

理想的情况下的输入可能是这样的:{DATE}山东省菏泽巨野县供电公司麒麟供电所投诉数量

但是用户的输入是多种多样的:

  • 山东省菏泽巨野县供电公司麒麟供电所投诉数量
  • 菏泽巨野县供电公司麒麟供电所投诉数量
  • 菏泽巨野投诉数量
  • 菏泽麒麟投诉数量
  • 巨野县供电公司麒麟供电所投诉数量
  • 巨野麒麟投诉数量
  • 巨野投诉数量
  • 麒麟供电所投诉数量
  • 麒麟投诉数量

通过微调后的模型可以生成如下实体标注: <Date>本月</Date><Province>山东省</Province><City>菏泽</City><Company>巨野县供电公司</Company><Substation>麒麟供电所</Substation><Indicator>投诉</Indic

使用大型语言模型进行命名实体识别

question = "山东省济南高新供电中心投诉总数"
<Province>山东省</Province><City>济南市</City><Company>高新供电中心</Company><Indicator>投诉</Indicator>总数
  • 济南增加了
question = "山东省济南市平阴县供电公司投诉总数"
<Province>山东省</Province><City>济南市</City><Company>平阴县供电公司</Company><Indicator>投诉</Indicator>总数
question = "济南市平阴县供电公司投诉总数"
<City>济南市</City><Company>平阴县供电公司</Company><Indicator>投诉</Indicator>总数

LLaMA-Factory 微调 Text2SQL

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

python -m venv env
source env/bin/activate

pip install -e .[metrics]
git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
CUDA_VISIBLE_DEVICES=0 llamafactory-cli train text2sql/qwen1.5-4b-chat_lora_sft.yaml
CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat text2sql/qwen1.5-4b-chat_lora_sft-inference.yaml
CUDA_VISIBLE_DEVICES=0 llamafactory-cli export text2sql/qwen1.5-4b-chat_lora_sft-merge.yaml 
CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat text2sql/text2sql-inference.yaml

支持两种格式的数据集:alpaca 和 sharegpt ,这里使用的是 alp

DashScope 模型服务灵积

灵积模型服务建立在“模型即服务”(Model-as-a-Service,MaaS)的理念基础之上。

灵积通过灵活、易用的模型API服务,让各种模态模型的能力,都能方便的为AI开发者所用。通过灵积API,开发者不仅可以直接集成大模型的强大能力,也可以对模型进行训练微调,实现模型定制化。

模型 描述 上下文长度 计量单价
qwen-turbo 通义千问超大型语言模型,支持中文、英文等不同语言输入。 8k 0.008元/1000 tokens
qwen-plus 通义千问超大型语言模型增强版,支持中文、英文等不同语言输入。 32k 0.02元/1000 tokens
qwen-max 通义千问千亿级别超大型语言模型,支持中文、英文等不同语言输入。 8k 0.12元/1000 tokens
qwen-max-longcontext 通义千问千亿级别超大型语言模型,支持中文、英文等不同语言输入。 30k 0.12元/1000 tokens
qwen-72b-chat 通义千问开源 720 亿参数大型语言模型 8k 0.02元/1000 tokens
qwen1.5-72b-chat 通义千问开源 720 亿参数大型语言模型 32k

vLLM 部署 Qwen1.5 LLM

下载模型

git clone https://www.modelscope.cn/qwen/Qwen1.5-7B-Chat-GPTQ-Int4.git

启动服务

python -m vllm.entrypoints.openai.api_server \
    --host 0.0.0.0 --port 9000 \
    --model Qwen/Qwen1.5-7B-Chat-GPTQ-Int4 \
    --quantization gptq \
    --tensor-parallel-size 2 \
    --dtype=half \
    --gpu-memory-utilization 0.95
  • 可以使用环境变量 CUDA_VISIBLE_DEVICES=2,3 来指定使用的 GPU。
  • --dtype=half T4 不支持 bfloat16,可以使用 float16。
  • --gpu-memory-utilization 默认为 0.9,这里因为 Qwen 的上下文为 32k,0.9 还不能满足,也可以通过 max-model-len 参数来调整上下文长度。

使用 curl 测试

chat completions curl http://localhost:9000/v1/chat/completions \ -H "Content-Type: application/json" \ -d &

MLX: An array framework for Apple silicon

MLX 是一个为 Apple Silicon 芯片上的机器学习研究设计的 array 框架,由 Apple 机器学习研究团队提供。

  • 熟悉的 API:MLX 拥有一个与 NumPy 紧密对应的 Python API。MLX 还拥有功能齐全的 C++、C 和 Swift API,这些 API 也紧密地反映了 Python API。MLX 拥有更高级别的包,如 mlx.nn 和 mlx.optimizers,它们的 API 紧密跟随 PyTorch,以简化构建更复杂模型的过程。
  • 统一内存:MLX 与其他框架的一个显著区别在于其统一内存模型。MLX 中的数组存在于共享内存中。可以在任何支持的设备类型上执行 MLX 数组的操作,无需数据传输。
  • MLX 的设计受到了像 NumPyPyTorchJaxArrayFire 这样的框架的启发。
  • conda
conda install -c conda-forge mlx
conda install -c conda-forge mlx-lm
pip install sentence_transformers   # Mistral requires
pip install jinja2                  # Mistral requires
pip install tiktoken                # Qwen requires

使用 llama.cpp 构建兼容 OpenAI API 服务

困惑度基于模型对测试集数据的概率,它的值越小,说明模型的性能越好。具体来说,如果一个模型的困惑度为 P,那么当这个模型预测下一个词的时候,它的不确定性(或者说“困惑度”)就相当于在 P 个词中随机选择一个词。

例如,如果一个模型的困惑度为 10,那么这个模型预测下一个词的不确定性就相当于在 10 个词中随机选择一个词。如果另一个模型的困惑度为 5,那么这个模型预测下一个词的不确定性就相当于在 5 个词中随机选择一个词。因此,困惑度越小,模型的性能就越好。

克隆代码

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_CUBLAS=1

--n-gpu-layers 设置 -1 没有效果,设置大一点的数字即可,如:15000

可以从 TheBloke 下载更多不同量化的 GGUF 模型。

  1. 转换 GGUF
python convert-hf-to-gguf.py \
    --outtype f32 \
    --outfile ~/HuggingFace/wangjunjian/gguf/qwen-7b-chat-f32.gguf \
    ~/HuggingFace/Qwen/Qwen-7B-Chat

量化 Q5_K_M .

LLM 的基准测试

  • Ampere, Ada, or Hopper GPUs (e.g., A100, RTX 3090, RTX 4090, H100). Support for Turing GPUs (T4, RTX 2080) is coming soon, please use FlashAttention 1.x for Turing GPUs for now.
  • Datatype fp16 and bf16 (bf16 requires Ampere, Ada, or Hopper GPUs).
  • All head dimensions up to 256. Head dim > 192 backward requires A100/A800 or H100/H800.

Turing GPU T4 不支持,需要使用 FlashAttention 1.x,否则会报错 ❌:

data: {
  "text": "**NETWORK ERROR DUE TO HIGH TRAFFIC. PLEASE REGENERATE OR REFRESH THIS PAGE.**\n\n(FlashAttention only supports Ampere GPUs or newer.)", 
  "error_code": 50001
}

在 MacBook Pro M2 Max 上安装 FastChat

FastChat 是一个开放平台,用于训练、服务和评估基于大型语言模型的聊天机器人。

mkdir deepseek-ai
ln -s /Users/junjian/HuggingFace/deepseek-ai/deepseek-llm-7b-chat deepseek-ai/deepseek-llm-7b-chat
ln -s /Users/junjian/HuggingFace/deepseek-ai/deepseek-coder-1.3b-instruct deepseek-ai/deepseek-coder-1.3b-instruct
mkdir THUDM
ln -s /Users/junjian/HuggingFace/THUDM/chatglm3-6b THUDM/chatglm3-6b
  • deepseek-ai/deepseek-llm-7b-chat
python -m fastchat.serve.model_worker \
    --model-path deepseek-ai/deepseek-llm-7b-chat --port 21002 \
    --worker-address http://localhost:21002 \
    --device mps