Qwen3.5-9B代码实例:修改app.py自定义端口与模型加载逻辑

发布时间:2026/5/20 6:50:18

Qwen3.5-9B代码实例:修改app.py自定义端口与模型加载逻辑 Qwen3.5-9B代码实例修改app.py自定义端口与模型加载逻辑1. 项目概述Qwen3.5-9B是阿里云推出的新一代多模态大语言模型基于Qwen3系列进行了全面升级。该模型采用高效的混合架构设计结合了门控Delta网络与稀疏混合专家(Mixture-of-Experts)技术在保持高性能的同时显著降低了推理延迟和成本。核心特性统一的视觉-语言基础架构在多模态任务上表现优异高吞吐推理能力适合生产环境部署强化学习泛化能力可适应多样化应用场景默认情况下模型通过Gradio Web UI提供服务运行在7860端口。本文将详细介绍如何通过修改app.py文件来自定义服务端口和模型加载逻辑。2. 环境准备2.1 基础环境要求确保您的系统满足以下要求Python 3.8或更高版本CUDA支持的NVIDIA GPU建议显存≥24GB已安装PyTorch与相关依赖2.2 依赖安装建议使用conda创建虚拟环境conda create -n qwen python3.10 conda activate qwen pip install torch torchvision torchaudio pip install gradio transformers3. 默认启动方式项目默认提供简单的启动脚本可直接运行python /root/Qwen3.5-9B/app.py这将启动Gradio Web界面默认监听7860端口。但实际部署时我们通常需要自定义这些参数。4. 自定义端口设置4.1 修改app.py端口配置打开app.py文件找到Gradio启动部分通常在文件末尾修改launch()方法的参数demo.launch( server_name0.0.0.0, # 允许外部访问 server_port8888, # 自定义端口号 shareFalse # 是否生成公开链接 )参数说明server_name设置为0.0.0.0允许外部网络访问server_port可更改为任何可用端口如8888share生产环境建议设为False4.2 通过命令行参数设置端口更灵活的方式是通过命令行参数动态指定端口import argparse parser argparse.ArgumentParser() parser.add_argument(--port, typeint, default7860, helpWeb server port) args parser.parse_args() demo.launch(server_portargs.port)然后通过以下命令启动python app.py --port 88885. 自定义模型加载逻辑5.1 修改模型加载配置在app.py中找到模型加载部分通常包含类似以下代码model AutoModelForCausalLM.from_pretrained( unsloth/Qwen3.5-9B, device_mapauto, torch_dtypetorch.float16 )可以添加更多加载参数以满足特定需求model AutoModelForCausalLM.from_pretrained( unsloth/Qwen3.5-9B, device_mapauto, torch_dtypetorch.float16, low_cpu_mem_usageTrue, # 减少CPU内存占用 trust_remote_codeTrue, # 信任远程代码 use_flash_attention_2True # 启用Flash Attention加速 )5.2 实现自定义加载策略对于更复杂的需求可以实现自定义加载逻辑def load_model_with_fallback(model_name, devicecuda:0): try: # 尝试从本地缓存加载 model AutoModelForCausalLM.from_pretrained( model_name, local_files_onlyTrue, device_mapdevice ) except: print(本地模型不存在从HuggingFace下载...) model AutoModelForCausalLM.from_pretrained( model_name, device_mapdevice ) return model model load_model_with_fallback(unsloth/Qwen3.5-9B)6. 完整自定义示例以下是整合了端口自定义和模型加载逻辑的完整app.py示例import torch from transformers import AutoModelForCausalLM, AutoTokenizer import gradio as gr import argparse def load_custom_model(model_path, devicecuda:0): print(f正在加载模型: {model_path}) tokenizer AutoTokenizer.from_pretrained(model_path, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( model_path, device_mapauto, torch_dtypetorch.float16, low_cpu_mem_usageTrue, trust_remote_codeTrue, use_flash_attention_2True ) return model, tokenizer def generate_text(prompt, model, tokenizer): inputs tokenizer(prompt, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_new_tokens200) return tokenizer.decode(outputs[0], skip_special_tokensTrue) def create_interface(model, tokenizer): def predict(input_text): return generate_text(input_text, model, tokenizer) return gr.Interface( fnpredict, inputstext, outputstext, titleQwen3.5-9B 演示 ) def main(): parser argparse.ArgumentParser() parser.add_argument(--port, typeint, default7860, helpWeb server port) parser.add_argument(--model, typestr, defaultunsloth/Qwen3.5-9B, help模型路径或名称) args parser.parse_args() model, tokenizer load_custom_model(args.model) interface create_interface(model, tokenizer) interface.launch(server_portargs.port, shareFalse) if __name__ __main__: main()7. 部署建议与注意事项7.1 生产环境部署建议端口选择避免使用知名服务端口如80, 443, 3306等防火墙确保开放所选端口模型加载优化首次运行会下载模型权重建议提前下载大模型加载需要足够内存监控系统资源安全考虑不要在生产环境使用shareTrue考虑添加身份验证层7.2 常见问题解决端口冲突问题# 检查端口占用 netstat -tulnp | grep 8888 # 终止占用进程 kill -9 PID模型加载失败确保有足够的GPU内存至少24GB检查网络连接特别是访问HuggingFace仓库尝试降低torch_dtype为torch.float328. 总结通过修改app.py文件我们可以灵活定制Qwen3.5-9B模型服务的端口和加载逻辑满足不同部署场景的需求。关键点包括通过Gradio的launch()参数或命令行参数自定义服务端口调整from_pretrained加载参数优化模型加载过程实现自定义加载策略处理特殊情况生产环境部署时注意安全和性能考量这些自定义能力使得Qwen3.5-9B能够更好地适应各种实际应用场景从本地开发测试到生产环境部署。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻