电脑建立网站平台,长春网站建设v1,网站制作自助,中法电商网站建设最近在学习书生第六期实战训练营#xff0c;提供免费的算力和教程#xff0c;如果感兴趣就一起来学习吧#xff01; 文章目录一、开发机选择和环境配置二、快速部署三、高并发请求四、Openai格式起Server五、量化部署5.1 INT4 模型量化和部署5.2 KVCache 量化和部署一、开发…最近在学习书生第六期实战训练营提供免费的算力和教程如果感兴趣就一起来学习吧文章目录一、开发机选择和环境配置二、快速部署三、高并发请求四、Openai格式起Server五、量化部署5.1 INT4 模型量化和部署5.2 KVCache 量化和部署一、开发机选择和环境配置选择镜像为 Cuda12.8-conda并选择 GPU 为 30% A100conda create-n lmdeploy2 python3.10-y conda activate lmdeploy2 pip install lmdeploy openai datasets jmespath二、快速部署通过配置 PytorchEngineConfig 中的关键参数可以优化模型在并发、缓存和会话管理方面的表现fromlmdeployimportpipeline,PytorchEngineConfigfromlmdeploy.vlimportload_imagedefmain():# 初始化pipelinepipepipeline(/root/share/new_models/Intern-S1-mini,backend_configPytorchEngineConfig(max_batch_size32,enable_prefix_cachingTrue,cache_max_entry_count0.1,session_len4096,))print(✅ Pipeline初始化成功)# 测试推理image_pathhttps://pic1.imgdb.cn/item/68d20846c5157e1a8828f9bf.jpg# 替换为实际图片路径prompt请描述这张图片的内容responsepipe([(prompt,load_image(image_path))])print(回复:,response[0].text)returnpipeif__name____main__:pipemain()max_batch_size32如同城市中一条 多车道高速公路 的收费站。它允许车辆请求批量、并行地通过一次最多可以放行32辆车。车道越多batch_size 越大单位时间内能处理的车辆就越多从而显著提升整个路网的通行效率。enable_prefix_cachingTrue类似于交通系统对于 高频出行路线 的“绿波带”规划。比如大量车辆都从A地到B地请求前缀相同指挥中心会根据历史数据预先计算并优化好这条路径的信号灯配时缓存中间结果。当这些车辆再次出发时可以一路绿灯大大加快通行速度。cache_max_entry_count0.1好比是交通指挥中心用来存储常用路径规划的 “快速查询表”的物理内存大小。这个值决定了能存储多少条常用路线信息。如果设置得太小很多路线需要重新规划效率降低设置得太大则会占用过多办公空间内存资源甚至影响其他交通管理功能的运行。这个参数就是为了在加速效果和资源消耗之间找到最佳平衡点。session_len4096可以看作是 交通指挥中心为每辆车保留的“历史行程单”的长度。当一辆车一个会话在城市中行驶时指挥中心会记录它最近走过的4096个路口以便更好地预测它的下一个目的地并提供更连贯的导航服务。这个长度既保证了导航的连贯性又避免了因为存储无限长的历史轨迹而导致计算中心内存过载。三、高并发请求fromlmdeployimportpipeline,PytorchEngineConfigfromlmdeploy.vlimportload_imageimporttimedefmain():# 初始化pipeline - 设置批量处理能力pipepipeline(/root/share/new_models/Intern-S1-mini,backend_configPytorchEngineConfig(max_batch_size32,# 一次能处理32个请求enable_prefix_cachingTrue,cache_max_entry_count0.1,session_len4096,))print(✅ Pipeline初始化成功)print( 模拟多个用户同时请求...)# 准备多个不同的图片和问题模拟多个用户requests[(描述这张图片的主要内容,https://pic1.imgdb.cn/item/68d20846c5157e1a8828f9bf.jpg),(图片里有什么颜色,https://pic1.imgdb.cn/item/68d20846c5157e1a8828f9bf.jpg),(这张图片让你想到什么,https://pic1.imgdb.cn/item/68d20846c5157e1a8828f9bf.jpg),(分析图片的构图,https://pic1.imgdb.cn/item/68d20846c5157e1a8828f9bf.jpg),(图片中有文字吗,https://pic1.imgdb.cn/item/68d20846c5157e1a8828f9bf.jpg)]# 方法1一次性批量发送所有请求就像快餐店一次接多个订单print(\n 方法1批量处理一次发送所有请求)batch_inputs[]forprompt,img_pathinrequests:batch_inputs.append((prompt,load_image(img_path)))start_timetime.time()batch_responsespipe(batch_inputs)# 一次处理所有请求end_timetime.time()fori,responseinenumerate(batch_responses):print(f用户{i1}问:{requests[i][0]})print(fAI回复:{response.text[:50]}...)# 只显示前50个字print(---)print(f✅ 批量处理耗时:{end_time-start_time:.2f}秒)# 方法2逐个发送请求对比效果print(\n 方法2逐个处理一个一个来)start_timetime.time()forprompt,img_pathinrequests:single_responsepipe([(prompt,load_image(img_path))])print(f单个回复:{single_response[0].text[:30]}...)end_timetime.time()print(f⏱️ 逐个处理耗时:{end_time-start_time:.2f}秒)returnpipeif__name____main__:pipemain()四、Openai格式起Serverlmdeploy serve api_server/root/share/new_models/Intern-S1-mini \--backend pytorch \--server-name0.0.0.0\--server-port23333\--dtype float16 \--quant-policy0和vllm差不多调用方式fromopenaiimportOpenAI clientOpenAI(api_keyYOUR_API_KEY,# A dummy api_key is requiredbase_urlhttp://0.0.0.0:23333/v1)model_nameclient.models.list().data[0].idresponseclient.chat.completions.create(modelmodel_name,messages[{role:user,content:[{type:text,text:Describe the image please,},{type:image_url,image_url:{url:https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg,},}],}],temperature0.8,top_p0.8)print(response)五、量化部署5.1 INT4 模型量化和部署模型转化将原始模型转换为4-bit量化版本lmdeploy lite auto_awq/root/share/model_repos/internlm2-7b--work-dir/root/internlm2-7b-4bit--calib-dataset wikitext模型量化部署lmdeploy serve api_server/root/internlm2-7b-4bit--backend pytorch调用测试fromopenaiimportOpenAI clientOpenAI(api_keyYOUR_API_KEY,# A dummy api_key is requiredbase_urlhttp://0.0.0.0:23333/v1)model_nameclient.models.list().data[0].idresponseclient.chat.completions.create(modelmodel_name,messages[{role:user,content:[{type:text,text:上海有什么# 这里将外层单引号改为双引号}],}],temperature0.8,top_p0.8,max_tokens100)print(response)5.2 KVCache 量化和部署一行指令就可以搞定:lmdeploy serve api_server/root/internlm2-7b-4bit--quant-policy8调用测试