尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

海光 DCU 大模型推理环境全流程脚本集

海光 DCU 大模型推理环境全流程脚本集 海光DCU大模型推理环境全流程脚本集纯代码可直接复用整理一套从环境校验、依赖安装、服务部署到压测验证的全链路可运行脚本全程无额外依赖复制到服务器按顺序执行即可完成整套推理环境搭建适合快速部署生产级推理服务。1. DTK环境一键校验脚本执行前先确认DTK环境是否正常、硬件是否可识别避免后续安装全做无用功。保存为check_dtk_env.sh#!/bin/bashecho DCU 环境基线校验 # 1. 检查rocm-smi工具echo-n1. rocm-smi 工具: ifcommand-vrocm-smi/dev/null;thenecho正常elseecho未找到请先加载DTK环境变量exit1fi# 2. 检查HIP编译器echo-n2. hipcc 编译器: ifcommand-vhipcc/dev/null;thenhipcc--version2/dev/null|grepHIP versionelseecho未找到exit1fi# 3. 设备识别检查echo-n3. DCU 设备识别: card_count$(rocm-smi--showhw2/dev/null|grep-cDevice ID)if[$card_count-gt0];thenecho检测到$card_count张卡elseecho未识别到设备请检查驱动与权限exit1fi# 4. 输出核心硬件信息echo-e\n 硬件明细 rocm-smi--showhw2/dev/null|grep-EDevice ID|VRAM Total|Compute Unitecho-e\n✅ 环境校验通过使用方式bash check_dtk_env.sh任意一项失败都会直接提示对应问题。2. PyTorch与推理依赖一键安装自动匹配DTK版本安装对应ROCm版PyTorch同时安装vLLM、transformers等推理必备依赖。保存为install_deps.sh#!/bin/bashecho 安装 DCU 推理依赖 # 自动识别DTK对应ROCm版本DTK_VER$(hipcc--version2/dev/null|grep-oPHIP version: \K[0-9]|head-1)if[$DTK_VER-ge26];thenROCM_VER6.0TORCH_VER2.4.0elif[$DTK_VER-ge25];thenROCM_VER5.7TORCH_VER2.3.1elseechoDTK版本过低建议升级至25.04以上exit1fiecho匹配 ROCm 版本:$ROCM_VERPyTorch 版本:$TORCH_VER# 安装PyTorchpipinstalltorch$TORCH_VERtorchvision0.19.0\--index-url https://download.pytorch.org/whl/rocm$ROCM_VER# 安装推理常用依赖pipinstalltransformers accelerate sentencepiece\modelscopevllm0.18.1 requests# 验证安装结果echo-e\n 安装结果验证 python3EOF import torch import transformers import vllm print(fPyTorch: {torch.__version__}) print(fTransformers: {transformers.__version__}) print(fvLLM: {vllm.__version__}) print(fDCU可用: {torch.cuda.is_available()}) print(fDCU数量: {torch.cuda.device_count()}) EOFecho✅ 依赖安装完成使用方式bash install_deps.sh自动适配DTK版本无需手动对应。3. vLLM推理服务一键启停脚本带进程守护、日志管理的服务化脚本支持启动、停止、状态查询无需手动管理进程。保存为vllm_service.sh#!/bin/bash# 配置项 - 根据实际环境修改MODEL_PATH./models/Qwen2-7B-InstructMODEL_NAMEQwen2-7B-InstructPORT8000TP_SIZE1DTK_ENV/opt/dtk-26.04/env.shLOG_FILE./vllm_service.logPID_FILE./vllm.pid# 加载DTK环境source$DTK_ENVexportTRITON_HIP_LLD_PATH/opt/dtk-26.04/llvm/bin/ld.lldstart_service(){if[-f$PID_FILE]kill-0$(cat$PID_FILE)2/dev/null;thenecho服务已在运行PID:$(cat$PID_FILE)exit1fiecho启动 vLLM 推理服务...nohupnumactl--cpunodebind0--membind0\vllm serve$MODEL_PATH\--served-model-name$MODEL_NAME\--tensor-parallel-size$TP_SIZE\--dtypebfloat16\--max-model-len8192\--gpu-memory-utilization0.9\--enforce-eager\--max-num-seqs128\--host0.0.0.0\--port$PORT\$LOG_FILE21echo$!$PID_FILEecho服务已启动PID:$!echo日志文件:$LOG_FILEecho端口:$PORT}stop_service(){if[!-f$PID_FILE];thenecho服务未运行exit1fipid$(cat$PID_FILE)ifkill-0$pid2/dev/null;thenecho停止服务PID:$pidkill$pidsleep3kill-9$pid2/dev/nullfirm-f$PID_FILEecho服务已停止}status_service(){if[-f$PID_FILE]kill-0$(cat$PID_FILE)2/dev/null;thenecho✅ 服务运行中PID:$(cat$PID_FILE)echo端口:$PORTelseecho❌ 服务未运行fi}case$1instart)start_service;;stop)stop_service;;restart)stop_service;sleep2;start_service;;status)status_service;;*)echo用法:$0start|stop|restart|status;exit1;;esac使用方式bashvllm_service.sh start# 启动服务bashvllm_service.sh status# 查看状态bashvllm_service.sh stop# 停止服务4. 推理接口压测脚本服务启动后批量并发压测输出吞吐、平均延迟等核心指标量化验证服务性能。保存为benchmark.pyimporttimeimportrequestsimportthreadingfromstatisticsimportmean# 配置API_URLhttp://localhost:8000/v1/chat/completionsMODEL_NAMEQwen2-7B-InstructCONCURRENT16# 并发数TOTAL_REQUESTS64MAX_TOKENS256PROMPT请详细介绍海光DCU的主要应用场景和技术特点# 全局统计success0total_tokens0latencies[]lockthreading.Lock()defworker():globalsuccess,total_tokens payload{model:MODEL_NAME,messages:[{role:user,content:PROMPT}],max_tokens:MAX_TOKENS,temperature:0.1,stream:False}starttime.perf_counter()try:resprequests.post(API_URL,jsonpayload,timeout60)costtime.perf_counter()-startifresp.status_code200:dataresp.json()tokensdata[usage][completion_tokens]withlock:success1total_tokenstokens latencies.append(cost)exceptExceptionase:print(f请求失败:{e})if__name____main__:print(f开始压测: 并发{CONCURRENT}, 总请求{TOTAL_REQUESTS})start_timetime.perf_counter()threads[]for_inrange(TOTAL_REQUESTS):tthreading.Thread(targetworker)threads.append(t)t.start()# 控制并发数whilethreading.active_count()CONCURRENT1:time.sleep(0.01)fortinthreads:t.join()total_timetime.perf_counter()-start_timeprint(\n 压测结果 )print(f成功请求:{success}/{TOTAL_REQUESTS})print(f总生成Token:{total_tokens})print(f总耗时:{total_time:.2f}s)print(f平均吞吐:{total_tokens/total_time:.2f}token/s)print(f单请求平均延迟:{mean(latencies):.2f}s)print(fQPS:{success/total_time:.2f}req/s)使用方式python3 benchmark.py自动输出完整性能指标。5. 显存与进程一键清理脚本服务异常退出、显存残留时执行快速释放所有DCU资源无需重启节点。保存为clean_dcu.sh#!/bin/bashecho DCU 资源清理工具 # 列出所有占用DCU的进程echo当前占用DCU设备的进程:echoPID 用户 进程名echo-------------------------pidsfordevin/dev/dri/renderD*;dodev_pids$(fuser$dev2/dev/null)forpidin$dev_pids;doif!echo$pids|grep-q$pid;thenpids$pids$piduser$(ps-p$pid-ouser2/dev/null)comm$(ps-p$pid-ocomm2/dev/null)printf%-6s %-8s %s\n$pid$user$commfidonedoneif[-z$pids];thenecho无占用进程显存空闲exit0firead-p是否终止以上所有进程并释放显存? (y/n): confirmif[$confirmy];thenforpidin$pids;dokill-9$pid2/dev/nullecho已终止进程$piddone# 清理PyTorch缓存python3-cimport torch; torch.cuda.empty_cache()2/dev/nullecho✅ 清理完成elseecho已取消操作fi使用方式bash clean_dcu.sh先列进程再确认避免误杀正常任务。以上5个脚本覆盖了DCU大模型推理环境从部署到运维的全流程高频场景全部基于原生命令与官方工具实现无额外依赖存到服务器固定目录即可长期复用。
返回列表