领域内问答分享

AIGC

AIGC在各种方面的应用

领域内问答的是如何实现的

数据集来源

A. 内部平台使用教程
B. 行业报告,白皮书等
C. 美妆专业知识
D.所有用户(客户,内部人员)常见问题收集

不同数据集不同对待,完全训练,微调和提示工程

对于从0开始学习的大模型来说,最好的方式是完全训练。

完全训练:针对大公司有超多数据集和计算资源,可以采用完全训练的方式。

对于基础的专业知识来说,最好的方式是微调训练。

微调训练:基于大模型的二次训练。主要使用的方法是使用开源大模型,例如
Base模型:Facebook的LLama模型,bigScience的Bloom, 清华的GLM等,借助工具库和显存优化算法accelerate,torchrun,DeepSpeed,采用适配器的方式进行微调,典型的包括Huggingface的PEFT库集成,Parameter-Efficient Fine-Tuning 参数高效微调的方法。

对于部分专业文档问答,教程来说,最好的方式是提示工程,现学现用的方式。

LLM中的推理生成流程

输入

历史聊天和最新问题会转成如下格式进行tokenizer

例如历史聊天记录为Round 0部分,Round 1 为最新的问题,拼接历史和最新的聊天作为输入:

1
2
3
4
5
6
'[Round 0]
问:现在开始,你的任务是提取关键词,提取下列语句中的关键词,并用空格分隔:科普之路是不是任重而道远?
答:科普 道路 任重 道远
[Round 1]
问:提取下列语句中的关键词:简述下噪音污染
答:'

Tokenizer

文字经过tokenizer,进行拆词变成input id

输入模型generate函数

重要参数:

inputs:输入的input id,其实还可以语音到文本,图片到本文,都可以。

logits_processor:对预测出来的下一个logits的处理,例如使用temperature,topk,topp,或用户对logits进行自定义处理等

stopping_criteria: 停止生成的条件,例如遇到了EOS的token或用户指定token,或达到最大长度等等。

is_encoder_decoder:是解码器还是编码器-解码器架构

While True:
​ 准备input_id
​ 模型前向传播
​ 获取模型返回的logits
​ 对logits进行处理,例如temperature,topk等
​ softmax和Sample token,得到next token id
​ 更新input_id
​ 判断停止生成条件,如果没有继续生成,否则break

LLM中使用的超参数

对应着New bing中的对话风格。

创作,平衡和准确,意味着temperature的不同。

Langchain

集成了最新的使用LLM进行解决复杂问题的方法。Langchain是链式调用工具,整合数据处理,数据调用,提示工程,LLM调用,输出格式化,复杂链式调用等技术,是自然语言和程序之间进行交互的胶水,由语言模型驱动的应用程序的框架,数据感知:将语言模型连接到其他数据源,Agentic:允许语言模型与其环境交互。

ChatGPT的plugins和LangChain的Tools

ChatGPT Plugins

  • 让Chatgpt使用工具,插件可以成为语言模型的“眼睛和耳朵”,使它们可以访问太新、太个人化或太具体而无法包含在训练数据中的信息

  • 检索实时信息;例如,体育比分、股票价格、最新消息等

  • 检索知识库信息;例如,公司文档、个人笔记等

  • 协助用户采取行动;例如,订机票、订餐等

LangChain tools

Agent可以采取的行动,可以定制化开发。有工具tool和工具包toolkits两种概念,工具包就是多个工具的一起协作。工具的类型和Chatgpt的Plugin是一样的。但是工具更多。

Q&A环节


领域内问答分享
https://johnson7788.github.io/2023/05/24/%E9%A2%86%E5%9F%9F%E5%86%85%E9%97%AE%E7%AD%94%E5%88%86%E4%BA%AB/
作者
Johnson
发布于
2023年5月24日
许可协议