基础任务

任务一 量化

使用结合W4A16量化与kv cache量化的internlm2_5-1_8b-chat模型封装本地API并与大模型进行一次对话,作业截图需包括显存占用情况与大模型回复,参考4.1 API开发,请注意2.2.3节与4.1节应使用作业版本命令。

1. 非量化时显存占用情况(50% A100)

在这里插入图片描述
未量化的模型参数 14GB
kv cache 20.8GB = (40-14) * 0.8 GB
其他运行占用 0.6 GB 左右
总共 35.4 GB

2. 设置 kv cache 比例后显存占用情况

执行以下语句

conda activate lmdeploy
lmdeploy chat /root/models/internlm2_5-7b-chat --cache-max-entry-count 0.4

在这里插入图片描述
未量化的模型参数 14GB
kv cache 10.4GB = (40-14) * 0.4 GB
其他运行占用 0.78 GB 左右
总共 25.1 GB

3. 设置在线 kv cache 量化

执行以下语句

lmdeploy serve api_server \
    /root/models/internlm2_5-7b-chat \
    --model-format hf \
    --quant-policy 4 \
    --cache-max-entry-count 0.4\
    --server-name 0.0.0.0 \
    --server-port 23333 \
    --tp 1

显存占用情况跟上面相似,但此时可以存储更多的元数据
在这里插入图片描述

4. W4A16 模型量化和部署

W4A16的量化配置意味着:

  • 权重被量化为4位整数。
  • 激活保持为16位浮点数。
    执行以下命令,使用1.8B模型进行尝试
lmdeploy lite auto_awq \
   /root/models/internlm2_5-1_8b-chat \
  --calib-dataset 'ptb' \
  --calib-samples 128 \
  --calib-seqlen 2048 \
  --w-bits 4 \
  --w-group-size 128 \
  --batch-size 1 \
  --search-scale False \
  --work-dir /root/models/internlm2_5-1_8b-chat-w4a16-4bit

在这里插入图片描述

4.1 量化前后模型大小对比

量化模型大小
在这里插入图片描述
原模型大小
在这里插入图片描述

4.2 量化后模型运行显存占用情况

1.8B 的 模型
在这里插入图片描述

5. W4A16 + KV cache + KV cache量化

执行以下指令(使用量化后的 1.8B 模型)

lmdeploy serve api_server \
    /root/models/internlm2_5-1_8b-chat-w4a16-4bit/ \
    --model-format awq \
    --quant-policy 4 \
    --cache-max-entry-count 0.4\
    --server-name 0.0.0.0 \
    --server-port 23333 \
    --tp 1

得到结果
在这里插入图片描述
此时的显存占用
在这里插入图片描述
启动 API 服务
在这里插入图片描述
使用命令行调用API对话
在这里插入图片描述

任务二 Function call

使用Function call功能让大模型完成一次简单的"加"与"乘"函数调用,作业截图需包括大模型回复的工具调用情况,参考4.2 Function call(选做
在这里插入图片描述
一个奇怪的报错:
在这里插入图片描述
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐