|
创建开发机创建一个使用10%GPU算力,cuda12.2系统的开发机,并启动。由于开发机的IO性能较差,开发机共享盘中已经创建好了本次实验所需要的conda环境#启动共享的conda环境condaactivate/root/share/pre_envs/icamp3_demo12部署cli模型创建目录创建一个目录用于存放代码mkdir-p/root/demotouch/root/demo/cli_demo.py12编写代码代码的主要逻辑是使用transformers加载共享目录下的internlm2-chat-1_8b模型importtorchfromtransformersimportAutoTokenizer,AutoModelForCausalLM#模型地址model_name_or_path='/root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b'#创建tokenizertokenizer=AutoTokenizer.from_pretrained(model_name_or_path,trust_remote_code=True,device_map='cuda:0')#运行在第0块显卡上#创建大语言模型model=AutoModelForCausalLM.from_pretrained(model_name_or_path,trust_remote_code=True,device_map='cuda:0')#切换到评估模式,推理时不进行反向传播,可以节约内存model=model.eval()#系统提示词system_prompt="""YouareanAIassistantwhosenameisInternLM(书生·浦语).-InternLM(书生·浦语)isaconversationallanguagemodelthatisdevelopedbyShanghaiAILaboratory(上海人工智能实验室).Itisdesignedtobehelpful,honest,andharmless.-InternLM(书生·浦语)canunderstandandcommunicatefluentlyinthelanguagechosenbytheusersuchasEnglishand中文."""#对话历史记录messages=[(system_prompt,'')]print("====================WelcometoInternLMchatbot,type'exit'toexit.=====================")whileTrue: input_text=input("\User>>>") input_text=input_text.replace('','') ifinput_text=='exit': break length=0 forresponse,_inmodel.stream_chat(tokenizer,input_text,messages): ifresponseisnotNone: print(response[length:],flush=True,end='') length=len(response)123456789101112131415161718192021222324252627282930313233343536运行模型接下来直接使用命令启动上面的模型python/root/demo/cli_demo.py1部署streamlitwebdemo使用streamlitwebdemo来部署模型,可以给模型一个简单的webui,交互对人类更加友好。拉取代码cd/root/demogitclonehttps://github.com/InternLM/Tutorial.git12启动streamlit服务代码中有streamlit服务的启动脚本,我们直接运行cd/root/demostreamlitrun/root/demo/Tutorial/tools/streamlit_demo.py--server.address127.0.0.1--server.port600612ssh连接远程开发机时,配置远程6006端口转发到本地ssh-CNg-L6006:127.0.0.1:6006root@ssh.intern-ai.org.cn-p[你的ssh端口号]1访问streamlit服务在本地机器上访问http://localhost:6006来访问demo。第一次访问后才会开始加载模型,需要等待一会。当出现以下画面时,服务已经启动成功了。可以修改下左侧的推理参数,查看模型的输出效果。我把最大生成长度修改为8,模型输出变化很大。LMDeploy部署InternLM-Xcomposer2-VL-1.8B模型InternLM-XComposer2是一款基于InternLM2的视觉大模型,擅长自由形式的文本图像合成和理解。主要特点如下:自由形式的交错文本图像合成:可以根据大纲、详细文本要求和参考图像等不同的输入,生成连贯且上下文相关,具有交错图像和文本的文章,从而实现高度可定制的内容创建。准确的视觉语言问题解决:基于自由形式的指令准确地处理多样化和具有挑战性的视觉语言问答任务,在识别、感知、详细标签,视觉推理等方面表现出色。令人惊叹的性能:基于InternLM2-7B的InternLM2-XComposer2在多个基准测试中位于开源多模态模型第一梯队,在部分基准测试中与GPT-4v和geminiPro相当,甚至超过它们。LMDeploy是一个用于压缩、部署和服务LLM的工具包,由MMRazor和MMDeploy团队开发。它具有以下核心功能高效的推理:LMDeploy通过引入持久化批处理、块KV缓存、动态分割与融合、张量并行、高性能CUDA内核等关键技术,提供了比vLLM高1.8倍的推理性能。有效的量化:LMDeploy支持仅权重量化和k/v量化,4bit推理性能是FP16的2.4位。量化后的模型质量已经通过OpenCompass评估确认轻松的分发:利用请求分发服务,LMDeploy可以在多台机器和设置上轻松高效地部署多模型服务交互式推理模式:通过缓存多轮圣诞过程中注意力的k/v,推理引擎记住对话历史,从而避免重复处理历史会话优秀的兼容性:LMDeploy运行KVCacheQuant,AWQ和自动前缀缓存同时使用LMDeploy已经支持了InternLM-XComposer2系列的部署,但要注意的是它仅支持InternLM-XComposer2系列模型的视觉对话功能。启动gradio服务condaactivate/root/share/pre_envs/icamp3_demolmdeployservegradio/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-1_8b--cache-max-entry-count0.112访问gradio服务和上面一样,在ssh连接时创建端口映射,在本地打开即可。使用lmdeploy启动的服务,不用等待模型的首次加载,在启动阶段模型就已经加载完毕了。响应速度非常快。LMDeploy部署InternVL2-2B模型InternVL2是上海人工智能实验室推出的新一代视觉-语言多模态大模型,是首个综合性能媲美美国闭源商业模型的开源多模态大语言模型。InternVL2系列从千亿参数到端侧小模型全覆盖,通专融合,支持多种模态。LMDeploy也支持部署InternVL2系列模型的部署启动gradio服务condaactivate/root/share/pre_envs/icamp3_demolmdeployservegradio/share/new_models/OpenGVLab/InternVL2-2B--cache-max-entry-count0.112访问gradio服务和上面一样,在ssh连接时创建6006端口映射,在本地打开即可。可以发现InternVL2模型的效果似乎比InternLM-XComposer2还要好
|
|