书生浦语第二期实战营学习作业&笔记(二)
操作文档:https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md
基础作业 :
使用 InternLM2-Chat-1.8B 模型生成 300 字的小故事:
八戒部署(笔记)
模型参数详解备注:
temperature:
用于控制模型输出的结果的随机性,这个值越大随机性越大。一般我们多次输入相同的prompt之后,模型的每次输出都不一样。
- 设置为 0,对每个prompt都生成固定的输出
- 较低的值,输出更集中,更有确定性
- 较高的值,输出更随机(更有创意😃)
一般来说,prompt 越长,描述得越清楚,模型生成的输出质量就越好,置信度越高,这时可以适当调高 temperature 的值;反过来,如果 prompt 很短,很含糊,这时再设置一个比较高的 temperature 值,模型的输出就很不稳定了。
top_k & top_p
这俩也是采样参数,跟 temperature 不一样的采样方式。
模型在输出之前,会生成一堆 token,这些 token 根据质量高低排名。
比如下面这个图片,输入 The name of that country is the 这句话,模型生成了一堆 token,然后根据不同的 decoding strategy 从 tokens 中选择输出。
这里的 decoding strategy 可以选择
-
greedy decoding: 总是选择最高分的 token,有用但是有些弊端:好处是简单,坏处是容易生成循环、重复的内容
-
top-k: 从 tokens 里选择 k 个作为候选,然后根据它们的 likelihood scores 来采样:
- 设置越大,生成的内容可能性越大;
- 设置越小,生成的内容越固定;
- 设置为1时,和 greedy decoding 效果一样。
-
top-p: 候选词列表是动态的,从 tokens 里按百分比选择候选词
- top-p 又名 Nucleus Sampling(核采样)
- top-p 选取的 tokens 数量不是固定的,这个方法是设定一个概率阈值
- 经常遇到的默认 top-p 值就是 0.7/0.8 这样,设置太低模型的输出太固定,设置太高,模型彻底放飞自我也不好。
top-k 与 top-p 为选择 token 引入了随机性,让其他高分的 token 有被选择的机会,不像 greedy decoding 一样总是选最高分的。
进阶作业
-
熟悉 huggingface 下载功能,使用 huggingface_hub python 包,下载 InternLM2-Chat-7B 的 config.json 文件到本地:
-
完成 浦语·灵笔2 的 图文创作 及 视觉问答 部署:
图文创作:
图片理解:
-
完成 Lagent 工具调用 数据分析 Demo 部署:
备注:
streamlit 一个傻瓜式构建可视化 web的 Python 神器:
https://juejin.cn/post/7044757186064416798
Lagent 相关知识:
Lagent 是一个轻量级、开源的基于大语言模型的智能体(agent)框架,支持用户快速地将一个大语言模型转变为多种类型的智能体,并提供了一些典型工具为大语言模型赋能。它的整个框架图如下:
Lagent 的特性总结如下:
- 流式输出:提供 stream_chat 接口作流式输出,本地就能演示酷炫的流式 Demo。
- 接口统一,设计全面升级,提升拓展性,包括:
1. Model : 不论是 OpenAI API, Transformers 还是推理加速框架 LMDeploy 一网打尽,模型切换可以游刃有余;
2. Action: 简单的继承和装饰,即可打造自己个人的工具集,不论 InternLM 还是 GPT 均可适配;
3. Agent:与 Model 的输入接口保持一致,模型到智能体的蜕变只需一步,便捷各种 agent 的探索实现 - 文档全面升级,API 文档全覆盖。