Search

Search IconIcon to open search

飞桨AI 大模型应用开发技巧与实战

Last updated Jun 15, 2023

src: 飞桨AI Studio - 人工智能学习实训社区

# 大模型时代的开发者新机遇

游戏npc逻辑, 游戏音乐美术都可以AI协助完成

应用场景 过去 -> 大模型时代的现代

  • 写作: 语法纠错->写作助手
  • 外语: 语言学习平台 -> AI 陪练

算力需求增长也很快

当时少参数的 GPT 效果还不超过 预训练模式

预训练模型:预训练+适配不同场景(微调)

知道了历史才知道为什么会通向通用人工智能

Decoder: 给前文推后文 Incoder: 挖空, BERT那一套

1.0败给了 BERT

零样本: 没给平行语料, 比如翻译, 没给中英文对应关系, 在大量文本训练里具备了翻译能力

GPT3 是应 API 的形式上线的, 没有开源

3.0 最重要的成果就是上下文学习能力

Emergent Ability

大模型典型问题: 胡说八道 安全性 -> alignment 这个是InstructGPT在做 -> 人类的表达方式 处理方式

Step 1 SFT: 人去编写prompt datase, 这个 prompt 是按人的价值观或者说类似真实的人的prompt. 然后用这个去做(有监督的) fine tune GPT-3 -> 结果: “我是一个人工智能模型, 我回答不了什么什么问题” (范文)

Step 2 排序答案, 形成奖励模型 (打分)

比如说旅游规划拆分成行程和耗费估计

评定大模型不应该是量化的指标, 而是由人类来感受/大模型能不能像人一样作出反应

产品的竞争应该是大部分都在应用开发层面

生成式其实不限于 text

# 大模型底层原理与应用开发范式

  • temperature: 按概率选的时候概率平滑
  • top_p/top_k: 只在前几个选
  • repetition_penalty: 已生成的做一个惩罚, 越大越不可能重复


大模型以前的开发


LLM 时代的开发范式


prompt 工程

比如说给一篇使用文档, 问大模型一些问题或者让他找到我遗漏的点


embedding 辅助(外接知识)

可以用LLM获取到知识库的embedding

client.search 是去获取和这个向量最相关的五篇文档(广义)


大模型微调

API微调是开发大模型的大厂提供, 让用户以简单的方式微调(背后也是前两种微调)


开发者必备能力和工具


ChatPaper 王荣胜

Gradio

# 用 Prompt 提示词构建你的专属聊天机器

Prompt 包括指令和上下文, 通常表达了用户期望的任务.

Prompt Engineering 只是优化和开发 Prompt, 并不设计修改和训练模型. 目的是使大模型的输出更加有效.

图中的案例类型:

  • 情感分析
  • 实体抽取
  • 翻译

Prompt 构造:(推荐顺序)

  • 任务提示
  • 上下文
  • 输入
  • 输出格式

构造时:

  • 明确给出任务, 最好是任务名字
  • 给出少量的参考案例(想想断墨寻径)

调整:

  • 直接对话(你忘记了xxx, 请用xx格式)
  • 增加案例

(Stable Diffusion 笑话)

(浇什么呢人工智障???)

使用技巧:

  • 避免AI感, 避免重复
  • 善用上下文(有上下文的时候就不那么容易重复)
  • 可以通过对话告诉模型以上目的

通过paddleNLP? packingface?

转到 GPU?

half -> 半精度转变

可以改进的角度:

  • 实时修改 input

代码核心是箭头指的那

fastapi/django/go 等都可以部署

chatGLM 支持微调

40分左右喵喵AI案例

做了「遗忘」, 在超过一定长度时砍掉最前面的一段, 避免显存爆炸. 没有被遗忘的内容在每一轮都会作为再次作为输入使用

显存会更快, CPU 会稍微更慢

47分问答

# 文生图问题

SD 找不到论文, 要看 Latent Diffusion 和 Imagen

越想深入了解越要往前找 到DDPM也只是2020年

上面是clip 下面是 diffusion

text encoder -> 文字特征 <-> 训练图像特征文字特征对应 -> diffusion黑盒(上图是自回归,下图是扩散模型) -> 图像特征 -decoder-> 图片(u-net)

下面一行是扩散的过程, 训练时从右往左, 生成时从左往右

文图生成大模型工具

  • Textual Inversion: 原生是不懂一些词的, 比如"画个齐白石风格的"
  • DreamBooth: 更优化, 能去学习风格
  • LoRA: 类似 DreamBooth, 但体量更少
  • ControlNet: 做控制, 保留什么改什么

  • 上行: 学习「打坐」这个词
  • 下行: 改变对「猫」的认知

  • pretrained : 载入哪个模型
  • train_data: 如右
  • learnable_p : “object” “style”
  • placeholder_token: 你以后生成的 cat toy 要是这样子的
  • init token: 你可以把这个toy先验知识带来, 再来学习 cat toy
  • 下面的参数基本是固定的

学习一个物体, 然后可以让物体完美出现在各种背景

  • instance_prompt: 你给的这些图是什么

civitai

DreamBooth 对所有参数更新, 开销巨大, 而 lora 只更新部分

灾难性遗忘, 比如 DB 因为整个改变, 所以可能会忘掉一些什么

scale: 比如 0.7毕加索 0.5梵高

不会有「应该放在哪个地方」问题

  • validation_prompt: 测试时的出图 prompt
  • validation_epochs: 测多少步vali 一下

中途冻结 SD, copy, 再用 ControlNet 训练完融合回去

想详细了解去看论文


# 智能文档查询助手

finetune因为需要频繁更新, 更适合专门的专业的人来干

能联合个人知识库??

  • ptv: 帮助将输入转换为语言模型能理解的
  • ir: 语言模型和文档更好地交互
  • cmh: 历史管理