书生大模型学习笔记及课后作业5

本文介绍了如何使用LMDeploy将InternLM-Chat-7B模型部署到本地对话、网页Gradio和API服务中,并提供了基础和进阶作业,涉及模型量化、内存优化及不同部署方式的性能比较。

课程内容

课程地址:GitHub - InternLM/tutorial

第5节 LMDeploy 大模型量化部署实践

课程笔记

课后作业

基础作业:

  • 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型,生成 300 字的小故事(需截图)

①在线转换,直接启动本地的Huggingface模型

②TurboMind推理+命令行本地对话

③TurboMind推理+APi服务

(1)启动web服务

(2)服务端本地测试

(3)SwaggerUi接口服务界面

④TurboMind服务作为后端

(1)启动TurboMind服务

(2)启动Gradio作为前端

(3)测试前端Gradio服务

⑤Gradio直接与TurboMind连接

(1)启动服务

(2)测试前端界面,生成300字的小故事

进阶作业(可选做)

  • 将第四节课训练自我认知小助手模型使用 LMDeploy 量化部署到 OpenXLab 平台。
  • 对internlm-chat-7b模型进行量化,并同时使用KV Cache量化,使用量化后的模型完成API服务的部署,分别对比模型量化前后(将 bs设置为 1 和 max len 设置为512)和 KV Cache 量化前后(将 bs设置为 8 和 max len 设置为2048)的显存大小。
  • 在自己的任务数据集上任取若干条进行Benchmark测试,测试方向包括:
    (1)TurboMind推理+Python代码集成
    (2)在(1)的基础上采用W4A16量化
    (3)在(1)的基础上开启KV Cache量化
    (4)在(2)的基础上开启KV Cache量化
    (5)使用Huggingface推理

### 书生浦语大模型作业实现指南 #### 1. 环境配置与模型加载 为了完成与书生浦语大模型相关的作业,首先需要确保基础环境已正确配置。可以通过指定 `local_llm_path` 参数来加载本地模型文件夹路径或 Huggingface 上的模型名称,例如 `"internlm/internlm2-chat-7b"` 或 `"qwen/qwen-7b-chat-int8"` [^1]。此外,还需设置参数 `local_llm_max_text_length`,以定义模型可接受的最大文本长度。 对于具体操作步骤,可以参考如下 Python 示例代码: ```python from transformers import AutoTokenizer, AutoModelForCausalLM model_name_or_path = "internlm/internlm2-chat-7b" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) max_input_length = model.config.max_position_embeddings print(f"Maximum input length supported by the model: {max_input_length}") ``` #### 2. 数据准备与微调策略 在实际应用中,可能需要对书生浦语大模型进行微调以适配特定任务需求。常见的微调方式包括 **增量预训练** 和 **指令跟随微调** [^3]。前者适用于引入新的领域知识(如行业术语、技术文档),后者则用于优化模型的对话能力。 以下是针对不同场景的数据准备建议: - 如果目标是提升模型的知识覆盖范围,则应收集相关领域的文章、书籍或其他结构化数据作为训练集; - 若旨在增强交互效果,则需构建高质量的人机对话样本集合。 #### 3. 功能开发实例——图文创作工具 利用书生浦语及其衍生版本(如浦语·灵笔2),开发者能够快速搭建具备先进图文生成能力的应用程序 [^2]。下面展示了一个简单的 CLI 接口设计思路,允许用户输入自定义主题并获得相应的文字描述及配套插图链接。 ```python def generate_article_with_images(prompt): response = model.generate( tokenizer.encode(prompt, return_tensors="pt"), max_new_tokens=500, num_beams=4, no_repeat_ngram_size=2 ) decoded_output = tokenizer.decode(response[0], skip_special_tokens=True) article_content, image_url_list = parse_response(decoded_output) # 自定义解析逻辑 return {"text": article_content, "images": image_url_list} if __name__ == "__main__": user_prompt = input("请输入您的创意方向:") result = generate_article_with_images(user_prompt) print(result["text"]) for idx, img_link in enumerate(result["images"]): print(f"[Image {idx+1}] URL: {img_link}") ``` > 注:以上仅为伪代码框架示意,请根据实际情况调整函数内部实现细节以及依赖库的选择。 #### 4. 常见问题分析与改进措施 尽管书生浦语系列表现出众,但在某些复杂查询情境下仍可能存在不足之处 [^5]。比如,当面对高度相似的信息源时,可能会倾向于优先选用最早录入的内容而忽略后续更新更优解的可能性。对此现象可通过以下方法缓解: - 扩展检索范围至整个数据库而非局限于前几条记录; - 结合外部搜索引擎动态补充实时资讯; - 定期维护知识库内容保持时效性和准确性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值