2025-04-30
深度学习ban
00

该文章已加密,点击 阅读全文 并输入密码后方可查看。

2025-04-30
深度学习
00

部署

https://modelscope.cn/models/Qwen/Qwen3-30B-A3B

部署时,您可以使用 sglang>=0.4.6.post1 或 vllm>=0.8.4 或创建一个与 OpenAI 兼容的 API 端点:

展开代码
SGLANG_USE_MODELSCOPE=1 python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B --reasoning-parser qwen3
展开代码
VLLM_USE_MODELSCOPE=1 vllm serve Qwen/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1

我爱用VLLM+Docker+不要reasoning:

展开代码
# 下载镜像 docker pull vllm/vllm-openai:latest # 下载模型 modelscope download Qwen/Qwen3-30B-A3B --local-dir ./Qwen/Qwen3-30B-A3B # 启动服务 docker run -d --gpus '"device=2,3"' \ -v /data/xiedong/Qwen/Qwen3-30B-A3B:/model \ -p 8027:8000 \ vllm/vllm-openai:latest \ --model /model --gpu_memory_utilization=0.9 \ --tensor-parallel-size 1 \ --data_parallel_size 2 \ --pipeline-parallel-size 1 \ --served-model-name Qwen3-30B-A3B \ --enable-auto-tool-choice --tool-call-parser hermes \ --enable-reasoning --reasoning-parser deepseek_r1 \ --api_key "YOUR_API_KEY"

要reasoning的话,run 要加入--enable-reasoning --reasoning-parser deepseek_r1

要工具解析的话,run 要加入--enable-auto-tool-choice --tool-call-parser hermes

限制tokens的话,run 要加入--max-model-len 10000

请求

请求:

展开代码
curl -X POST "http://10.136.19.27:8027/v1/chat/completions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3-30B-A3B", "messages": [ { "role": "user", "content": "你是谁?" } ], "temperature": 0.7, "top_p": 0.8, "top_k": 20, "max_tokens": 4096, "presence_penalty": 1.5 }'

对应回复:

展开代码
{ "id": "chatcmpl-978124635f614b4f8b1a1e24c36e9fb0", "object": "chat.completion", "created": 1745979458, "model": "Qwen3-30B-A3B", "choices": [ { "index": 0, "message": { "role": "assistant", "reasoning_content": "\n好的,用户问“你是谁?”,我需要回答我的身份。首先,我要明确自己的角色是通义千问,由阿里巴巴集团旗下的通义实验室研发。接下来,我应该简要说明我的功能和用途,比如回答问题、创作文字、逻辑推理、编程等等。同时,要保持口语化,避免使用专业术语,让用户容易理解。另外,可能需要加入一些友好的语气,比如用“你好呀!”来开头,让对话更亲切。还要注意不要包含任何格式,比如不用Markdown,保持自然的中文表达。最后,确保回答简洁明了,不超过两句话,同时涵盖主要信息。现在把这些点组织成一个自然的回复。\n", "content": "\n\n你好呀!我是通义千问,是阿里巴巴集团自主研发的超大规模语言模型,可以回答问题、创作文字、逻辑推理、编程等等。有什么我可以帮你的吗?😊", "tool_calls": [] }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "usage": { "prompt_tokens": 11, "total_tokens": 198, "completion_tokens": 187, "prompt_tokens_details": null }, "prompt_logprobs": null }

请求的时候,带工具要求

请求:

展开代码
curl -X POST "http://10.136.19.27:8027/v1/chat/completions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3-30B-A3B", "messages": [ { "role": "user", "content": "今天天气如何?请调用天气查询工具获取信息。" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "根据城市名称返回该城市的实时天气情况。", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "需要查询天气的城市名称" } }, "required": ["city"] } } } ], "temperature": 0.7, "top_p": 0.8, "top_k": 20, "max_tokens": 4096, "presence_penalty": 1.5 }'

模型回复是:

展开代码
{ "id": "chatcmpl-16af1ddb5f0d418e8669d2189ee07c8b", "object": "chat.completion", "created": 1745980126, "model": "Qwen3-30B-A3B", "choices": [ { "index": 0, "message": { "role": "assistant", "reasoning_content": "\n好的,用户问今天天气如何,并且要求调用天气查询工具。首先,我需要确定用户所在的城市,因为不同的城市天气不同。但用户没有提到具体是哪个城市,可能需要进一步询问。不过根据提供的工具,get_weather函数需要城市名称作为参数。这时候可能需要假设用户默认的城市,或者提示用户提供城市信息。但根据提供的工具示例,这里假设城市为北京。\n", "content": "\n\n", "tool_calls": [ { "id": "chatcmpl-tool-7cd273bfadf6475aa0c308fc08234885", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\": \"北京\"}" } } ] }, "logprobs": null, "finish_reason": "tool_calls", "stop_reason": null } ], "usage": { "prompt_tokens": 174, "total_tokens": 404, "completion_tokens": 230, "prompt_tokens_details": null }, "prompt_logprobs": null }

如果不需要thinking

考虑效率,不需要思考就加上"chat_template_kwargs": {"enable_thinking": false}

展开代码
curl -X POST "http://10.136.19.27:8027/v1/chat/completions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3-30B-A3B", "messages": [ { "role": "user", "content": "你是谁?" } ], "temperature": 0.7, "top_p": 0.8, "top_k": 20, "max_tokens": 4096, "presence_penalty": 1.5, "chat_template_kwargs": {"enable_thinking": false} }'

大模型回复如下,看起来内容到reasoning_content里了,这有问题:

展开代码
{ "id": "chatcmpl-0e9e560155564b07870b9474c37288ac", "object": "chat.completion", "created": 1745980349, "model": "Qwen3-30B-A3B", "choices": [ { "index": 0, "message": { "role": "assistant", "reasoning_content": "我是通义千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我的中文名是通义千问,英文名是Qwen。我被设计用来回答各种问题、创作文字、逻辑推理、编程等,可以支持多语言交流。如果你有任何问题或需要帮助,欢迎随时告诉我!", "content": null, "tool_calls": [] }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "usage": { "prompt_tokens": 15, "total_tokens": 85, "completion_tokens": 70, "prompt_tokens_details": null }, "prompt_logprobs": null }

一开始启动就不要think的话:

展开代码
# 启动服务 docker run -d --gpus '"device=2,3"' \ -v /data/xiedong/Qwen/Qwen3-30B-A3B:/model \ -p 8027:8000 \ vllm/vllm-openai:latest \ --model /model --gpu_memory_utilization=0.9 \ --tensor-parallel-size 1 \ --data_parallel_size 2 \ --pipeline-parallel-size 1 \ --served-model-name Qwen3-30B-A3B \ --enable-auto-tool-choice --tool-call-parser hermes \ --api_key "YOUR_API_KEY"

正常了:

展开代码
{ "id": "chatcmpl-19b25b7f103b44f0803fa33708aad95a", "object": "chat.completion", "created": 1745980850, "model": "Qwen3-30B-A3B", "choices": [ { "index": 0, "message": { "role": "assistant", "reasoning_content": null, "content": "我是通义千问,是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。我能够回答问题、创作文字、逻辑推理、编程等多种任务。你可以叫我Qwen或者通义千问。有什么我可以帮你的吗?", "tool_calls": [] }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "usage": { "prompt_tokens": 15, "total_tokens": 67, "completion_tokens": 52, "prompt_tokens_details": null }, "prompt_logprobs": null }
2025-04-29
深度学习
00

https://modelscope.cn/models/Qwen/Qwen3-32B

部署时,您可以使用 sglang>=0.4.6.post1 或 vllm>=0.8.4 或创建一个与 OpenAI 兼容的 API 端点:

展开代码
SGLANG_USE_MODELSCOPE=1 python -m sglang.launch_server --model-path Qwen/Qwen3-32B --reasoning-parser qwen3
展开代码
VLLM_USE_MODELSCOPE=1 vllm serve Qwen/Qwen3-32B --enable-reasoning --reasoning-parser deepseek_r1

我爱用VLLM+Docker+不要reasoning:

展开代码
# 下载镜像 docker pull vllm/vllm-openai:latest # 下载模型 modelscope download Qwen/Qwen3-32B --local_dir ./Qwen/Qwen3-32B # 启动服务 docker run -d --gpus '"device=0,1,2,3"' \ -v /data/xiedong/Qwen/Qwen3-32B:/model \ -p 8028:8000 \ vllm/vllm-openai:latest \ --model /model --gpu_memory_utilization=0.9 --tensor-parallel-size 2 --data_parallel_size 2 --pipeline-parallel-size 1 --max-model-len 10000 --served-model-name gpt # 启动服务2 docker run -d --gpus '"device=4,5,6,7"' \ -v /data/xiedong/Qwen/Qwen3-32B:/model \ -p 8028:8000 \ vllm/vllm-openai:latest \ --model /model --gpu_memory_utilization=0.9 --tensor-parallel-size 1 --data_parallel_size 4 --pipeline-parallel-size 1 --max-model-len 10000 --served-model-name gpt # 启动服务3 docker run -d --gpus '"device=2,3"' \ -v /ssd/xiedong/Qwen/Qwen3-32B:/model \ -p 8077:8000 \ vllm/vllm-openai:latest \ --model /model --gpu_memory_utilization=0.9 --tensor-parallel-size 1 --data_parallel_size 2 --pipeline-parallel-size 1 --max-model-len 10000 --served-model-name gpt

要reasoning的话,run 要加入--enable-reasoning --reasoning-parser deepseek_r1

请求:

展开代码
curl -X POST "http://10.136.19.27:8028/v1/chat/completions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt", "messages": [ { "role": "user", "content": "你是谁?" } ], "temperature": 0.7, "top_p": 0.8, "top_k": 20, "max_tokens": 4096, "presence_penalty": 1.5 }'

考虑效率,不需要思考就加上"chat_template_kwargs": {"enable_thinking": false}

展开代码
curl -X POST "http://10.136.19.27:8028/v1/chat/completions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt", "messages": [ { "role": "user", "content": "你是谁?" } ], "temperature": 0.7, "top_p": 0.8, "top_k": 20, "max_tokens": 4096, "presence_penalty": 1.5, "chat_template_kwargs": {"enable_thinking": false} }'
2025-04-29
单片机
00

使用 Ziegler-Nichols 法进行 PID 参数整定:实践指南

PID(比例-积分-微分)控制器广泛应用于工业控制中。虽然其结构简单,但如何选择合适的比例增益 KpK_p、积分时间 TiT_i 和微分时间 TdT_d 是实现良好控制性能的关键。本文将详细介绍一种经典且实用的 PID 参数整定方法——Ziegler-Nichols 法

2025-04-28
单片机
00

基于MQTT的设备监控与控制系统设计

引言

物联网(IoT)设备的远程监控与控制是现代智能系统的基础需求。本文将介绍一个基于MQTT协议的设备监控与控制系统,该系统由两部分组成:模拟单片机设备和PyQt客户端。我们将详细讨论系统的设计思路、代码实现以及实际应用场景。

2025-04-28
单片机
00

之前博客介绍了如何搭建EMQX:https://www.dong-blog.fun/post/1963

本博客在 EMQX 中配置规则将数据写入 MySQL,可以通过 规则引擎 + 数据桥接 实现。以下是详细步骤:

2025-04-27
深度学习
00

论文:https://arxiv.org/pdf/2407.17490 https://github.com/YuxiangChai/AMEX-codebase/tree/main/data_utils https://huggingface.co/datasets/Yuxiang007/AMEX

image.png

AMEX数据集包括三个层次的注释:

  1. GUI交互元素定位 :
  • 分类两类交互元素:可点击元素和可滚动元素。
  1. GUI屏幕和元素功能描述 :
  • 使用GPT生成屏幕和元素的功能描述,并进行人工检查以确保准确性。
  1. 复杂自然语言指令与GUI动作链 :
  • 每条指令平均包含12.8个步骤的动作链,显著高于现有数据集。
2025-04-27
Linux运维
00

在 Ubuntu 22.04 上,我们经常需要查看当前的网络带宽占用情况,尤其是下载大文件时,了解实时的下载速度可以帮助我们判断网络状况或管理下载任务。本文将介绍几种简单有效的方法来监控 Ubuntu 22.04 的下载带宽,包括终端工具和图形界面方案。

2025-04-24
自动控制
00

为什么极点在左半平面(LHP)系统就会稳定?

在控制系统中,极点的位置决定了系统的动态响应和稳定性。具体原因如下:

  1. 时域响应分析: • 对于连续时间系统,传递函数的极点 pip_i 对应的时域模态为 epite^{p_i t}

    • 若极点 pip_i 在左半平面(LHP)(即 Re(pi)<0\text{Re}(p_i) < 0),则 epite^{p_i t} 会指数衰减,系统最终趋于稳定。

    • 若极点 pip_i 在右半平面(RHP)(即 Re(pi)>0\text{Re}(p_i) > 0),则 epite^{p_i t} 会指数发散,系统不稳定。

    • 若极点在虚轴上(Re(pi)=0\text{Re}(p_i) = 0),则系统处于临界稳定(如持续振荡)。

  2. 稳定性判据: • BIBO稳定性(有界输入有界输出):所有极点必须在左半平面。

    • Lyapunov稳定性:对于线性系统,LHP极点等价于渐近稳定。

2025-04-23
自动控制
00

LQR控制原理与倒立摆系统实践指南

一、问题背景:惯性轮倒立摆控制 我们面对的是一个典型的欠驱动系统——惯性轮倒立摆(Inertia Wheel Pendulum)。系统通过控制惯性轮电机产生反扭矩来维持摆杆竖直平衡。系统参数如下:

2025-04-23
深度学习
00

配置

构建新的镜像:

展开代码
docker build --network=host --build-arg http_proxy=http://10.136.19.26:10828 --build-arg https_proxy=http://10.136.19.26:10828 -f Dockerfile -t kevinchina/deeplearning:vlmr1-0501 . # 进容器装环境: apt-get update apt-get install libibverbs1 pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip install babel python-Levenshtein matplotlib pycocotools timm==1.0.15 # Addtional modules pip install wandb==0.18.3 pip install tensorboardx pip install qwen_vl_utils torchvision pip install flash-attn --no-build-isolation pip install babel pip install python-Levenshtein pip install matplotlib pip install pycocotools pip install openai pip install httpx[socks] pip install json_repair
展开代码
docker commit 4411ba9deb19 kevinchina/deeplearning:vlmr1-0501-1
2025-04-23
自动控制
00

在MATLAB中,将状态空间模型转换为传递函数可以通过以下步骤完成:

方法一:使用 sstf 函数

  1. 定义状态空间矩阵:
    matlab
    展开代码
    A = [...]; % 状态矩阵 B = [...]; % 输入矩阵 C = [...]; % 输出矩阵 D = [...]; % 直接传输矩阵
  2. 创建状态空间对象:
    matlab
    展开代码
    sys_ss = ss(A, B, C, D);
  3. 转换为传递函数:
    matlab
    展开代码
    sys_tf = tf(sys_ss);
  4. (可选)约简传递函数(消除共同零极点):
    matlab
    展开代码
    sys_tf = minreal(sys_tf);
2025-04-22
自动控制
00

状态空间方程与传递函数的关系详解

在控制系统中,状态空间方程和传递函数是两种常用的数学模型,它们分别代表了现代控制理论和经典控制理论的核心工具。本文将深入探讨它们之间的内在联系与相互转换方法,并通过实例解析帮助读者更好地理解这两种模型的关系。


2025-04-22
自动控制
00

状态空间方程(State-Space Equation)是现代控制理论中描述动态系统的核心数学模型,它将系统的输入、输出和内部状态变量通过矩阵形式关联起来。以下是详细解释:

2025-04-21
自动控制
00

在带有惯性轮的倒立摆系统中,使用拉格朗日方程进行分析时,确定摆杆角度和惯性轮角度的方程右边的步骤如下:

  1. 系统建模与广义坐标 • 摆杆角度:定义为摆杆与垂直方向的夹角,记为 θ\theta

• 惯性轮角度:定义为惯性轮相对于摆杆的转角,记为 ϕ\phi。惯性轮的绝对转角为 θ+ϕ\theta + \phi

2025-04-21
深度学习
00

本地模型目录需要是git仓库:

  1. 初始化 Git 仓库(如果尚未初始化) 如果目录没有初始化过 Git,需要先执行:
bash
展开代码
git init
  1. 添加 Hugging Face 远程仓库
bash
展开代码
git remote add origin https://huggingface.co/hugxd/InternVL2_8B_Point_to_Box
2025-04-20
自动控制
00

《SWING UP AND BALANCING OF A REACTION WHEEL INVERTED PENDULUM》

https://github.com/B-Paweekorn/Reaction-wheel-inverted-pendulum

2025-04-19
深度学习
00
2025-04-19
深度学习
00

image_max_pixels

image_max_pixels, 这里的 area 就是宽*高

python
展开代码
# 在src/llamafactory/data/mm_plugin.py中定义 # 控制图像处理时的最大像素数量 # 如果图像超过这个像素数,会被调整大小 def get_image_processor_preprocess_params(image_processor): params = {} if hasattr(image_processor, "crop_size"): # for CLIP params["crop_size"] = { "height": image_processor.crop_size["height"], "width": image_processor.crop_size["width"] } params["size"] = max(params["crop_size"]["height"], params["crop_size"]["width"]) elif hasattr(image_processor, "size"): if isinstance(image_processor.size, dict): # for Qwen params["size"] = image_processor.size["max_edge"] elif isinstance(image_processor.size, list): # for InternVL params["size"] = image_processor.size else: params["size"] = image_processor.size # image_max_pixels用于确保图像不会太大,超出内存 if params.get("size", None) is not None and hasattr(image_processor, "image_max_pixels"): area = image_processor.image_max_pixels # 来自training_args.image_max_pixels size = int(math.sqrt(area)) params["size"] = size return params
2025-04-19
深度学习
00

LLaMA-Factory 源码信息

展开代码
register_model_group( models={ "InternVL2.5-1B-MPO": { DownloadSource.DEFAULT: "kingsley01/InternVL2_5-1B-MPO-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL2_5-1B-MPO-hf", }, "InternVL2.5-2B-MPO": { DownloadSource.DEFAULT: "kingsley01/InternVL2_5-2B-MPO-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL2_5-2B-MPO-hf", }, "InternVL2.5-4B-MPO": { DownloadSource.DEFAULT: "kingsley01/InternVL2_5-4B-MPO-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL2_5-4B-MPO-hf", }, "InternVL2.5-8B-MPO": { DownloadSource.DEFAULT: "kingsley01/InternVL2_5-8B-MPO-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL2_5-8B-MPO-hf", }, "InternVL3-1B-hf": { DownloadSource.DEFAULT: "kingsley01/InternVL3-1B-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL3-1B-hf", }, "InternVL3-2B-hf": { DownloadSource.DEFAULT: "kingsley01/InternVL3-2B-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL3-2B-hf", }, "InternVL3-8B-hf": { DownloadSource.DEFAULT: "kingsley01/InternVL3-8B-hf", DownloadSource.MODELSCOPE: "llamafactory/InternVL3-8B-hf", }, }, template="intern_vl", multimodal=True, )