Prompt设计与大语言模型微调

这篇具有很好参考价值的文章主要介绍了Prompt设计与大语言模型微调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

ChatGPT基本原理

“会说话的AI”,“智能体”

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

简单概括成以下几个步骤:

  1. 预处理文本:ChatGPT的输入文本需要进行预处理。

  2. 输入编码:ChatGPT将经过预处理的文本输入到神经网络中进行编码处理,使用的是多层transformer编码器结构。

  3. 预测输出:ChatGPT通过对输入进行逐个token预测,输出下一个最可能出现的token序列,使用的是softmax函数进行概率预测。

  4. 输出解码:ChatGPT将预测的token序列作为输入,经过多层transformer解码器结构进行解码处理,最终输出模型的回答。

  5. 重复步骤3和4:ChatGPT在处理输入时会持续输出预测的token序列,直到遇到停止符号或达到最大输出长度为止。



算法内核——Transformer

由 Encoder 和 Decoder 两个部分组成

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

编解码动画

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

Prompt设计

  什么是prompt?

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

看来跟我今天想分享的不太一样,加个具体的限定条件,然后呢?

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

这下对了!

Prompt的不同能直接决定模型是否能按我们的预期输出

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

  prompt基本技巧

1.清晰,明确,避免模糊的词语

bad case good case
产品描述不应该太短,用一些句子就行,也不用特别多 用3到5个短语描述这个产品

给手机天猫写首诗

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

给手机天猫写一首四句的古文诗,模仿李白的《早发白帝城》

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

2.用###或者"""或者<>或者'''将指令和待处理的内容分开

bad case good case
将下面内容总结为一句话。你应该提供尽可能清晰和具体的指令来表达你想让模型做什么。这将引导模型朝着期望的输出方向发展,并减少收到无关或不正确响应的可能性。不要混淆写一个清晰的提示和写一个简短的提示。在许多情况下,更长的提示提供更多的清晰度和上下文,这可以导致更详细和相关的输出。

将下面用三个引号括起来的内容总结为一句话:

需要总结的文本是:

'''

你应该提供尽可能清晰和具体的指令来表达你想让模型做什么。这将引导模型朝着期望的输出方向发展,并减少收到无关或不正确响应的可能性。不要混淆写一个清晰的提示和写一个简短的提示。在许多情况下,更长的提示提供更多的清晰度和上下文,这可以导致更详细和相关的输出。

'''

3.指定输出格式

bad case good case

生成三个虚构书名,包括它们的作者和类型。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

生成三个虚构书名,包括它们的作者和类型。以JSON列表的格式提供,包括以下键:book_id、title、author、genre

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

4.角色扮演,用扮演、担任等这一类词汇告诉大模型在对话中特定的人格或角色

bad case good case

给我推销一款男士洗面奶

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

system:我想让你扮演一个专业的导购员。你可以充分利用你的电商知识、导购话术,生动活泼的帮顾客介绍推销商品。

user:给我推销一款男士洗面奶

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

  Few shot进阶

启用上下文in-context learning学习,在prompt中提供几个样例(这里只有一个例子one-shot)

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

  Chain of Thought(Cot)

思维链(CoT)是一种改进的提示策略,用于提高 LLM 在复杂推理任务中的性能,如算术推理、常识推理和符号推理。

one-shot Cot

model input:

Q:小明有5个球,他又买了2筐,每一筐有3个球。那么他现在总共有几个球?

A:答案是11

Q:小花有23个苹果,他们午餐用去了20个,又买了6个。那么现在还有多少个苹果?

model output:

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

model input:

Q:小明有5个球,他又买了2筐,每一筐有3个球。那么他现在总共有几个球?

A:小明开始有5个球,又买了2筐球,每筐3个共6个球,合计11个球,答案是11

Q:小花有23个苹果,他们午餐用去了20个,又买了6个。那么现在还有多少个苹果?

model output:

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

上面的例子很好的激发了大模型的潜能,是否有prompt技巧无能为力的问题?

答案是肯定的,一些偏实时,模型训练过程中缺乏的语料知识,它也无能为力。



  Search API & GPT

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

"""
网页搜索结果:
{web_results}


当前日期:{current_date}


指令: 用给定的网络搜索结果,总结回复用户query


用户Query: {query}


回复语言: {reply_language}
"""

私有化知识库(嵌入式向量检索+LLM)

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

  ReAct框架

大模型Agent功能,大模型会自己分析问题,选择合适的工具,最终解决问题。

ReAct方式的作用就是协调LLM模型和外部的信息获取,与其他功能交互。如果说LLM模型是大脑,那ReAct框架就是这个大脑的手脚和五官。

关键概念 描述
Thought 由LLM模型生成,是LLM产生行为和依据
Act Act是指LLM判断本次需要执行的具体行为
Obs LLM框架对于外界输入的获取。
尽可能回答以下问题,可以使用工具:
{工具名和描述}
使用以下格式回答:
问题:你必须回答的问题


思考:你应该一致保持思考,思考要怎么解决问题
动作:{工具名}。每次动作只选择一个工具,工具列表{工具名和描述}
输入:{调用工具时需要传入的参数}
观察:{第三方工具返回的结果}


【思考-动作-输入-观察】循环N次


思考:最后,输出最终结果
最终结果:针对原始问题,输出最终结果
开始!
问题:上海最高楼是多少?它楼层高度的平方是多少?
思考:我需要知道上海最高楼,然后进行计算。
动作:搜索API
观察:632米
思考:我需要计算上海最高楼高度的平方,然后得到结果。
动作:计算器
输入:632^2
观察:399424
思考:
最终结果:上海最高楼632米,它的高度平方是399424

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

大模型SFT(supervised fine tuning)

▐  预训练 VS 微调

预训练:模型以一种无监督的方式去训练,学习根据前文生成下一个单词。在海量数据下进行,让大模型具备语言理解和生成能力。

指令微调:有监督的方式进行学习,包括任务描述,输入等,去预测答案。目标是如何跟人类指令对齐,让模型更加适应专业化领域场景

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

业务数据从哪来?

  1. 人工标注

  2. 种子数据 + self-instruct(gpt 3.5构造)

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

  P-tuning

动机:Fine-tuning需要微调整个预训练语言模型,且额外添加了新的参数,而Prompting则可以将整个预训练语言模型的参数保持固定,而只需要添加prompt来预测结果即可;

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

P-tuning:将Prompt转换为可以学习的Embedding层,并用MLP+LSTM的方式来对Prompt Embedding进行一层处理。

P-tuning V2:每一层都加入可训练的prompts,只对Prompt部分的参数进行训练,而语言模型的参数固定不变。

  LoRA

Low-rank Adaption of LLM,利用低秩适配(low-rank adaptation)的方法,可以在使用大模型适配下游任务时只需要训练少量的参数即可达到一个很好的效果。在计算资源受限的情况下的弥补方案。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

对于不同的下游任务,只需要在预训练模型基础上重新训练AB就可以了,这样也能加快大模型的训练节奏。

▐  LoRA VS 全参数微调

lora的优点在于轻量化,低资源。但缺点很明显,参与训练的模型参数量不多,在百万到千万级别的参数量,实验来看效果比全量微调差一些。



▐  C-Eval评估

C-Eval由上海交通大学,清华大学,爱丁堡大学共同完成,是构造了一个覆盖人文,社科,理工,其他专业四个大方向,52 个学科(微积分,线代 …),从中学到大学研究生以及职业考试,一共 13948 道题目的中文知识和推理型测试集。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

C-Eval认为:一个模型要强,首先需要广泛的知识,然后在知识的基础上做推理,这样才能代表一个模型可以做复杂且困难的事情。

此外,还有一些公开评测集,用于评估模型在学科综合、语言能力、推理能力等。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

手机天猫AI导购助理项目落地应用

▐  项目背景

“AI形象”璇玑作为个人专属导购员,在交互式对话中进行用户理解、导购商品。

定位:交互式搜索导购产品

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理


▐  算法框架

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

▐  语料收集

  1. 电商种子问题收集:端内会话日志、小红书sug收集电商领域种子问题:

  2. 问题泛化:明确场景问题定义,通过手猫核心query、种子问题等,设计prompt,通过gpt补充收集问题;

  3. 人工标注: 标注高质量语料;

  4. self-instruction:通过prompt(few-shot)方法根据已有人工标注扩充新的instruction。通过gpt获取更多训练语料,解决标注人效瓶颈。

▐  模型训练

base模型选型

中文评测

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

数学评测

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

训练平台:AOP/星云/PAI

基于达摩院模型基座qwen-14B,针对璇玑产品,新增电商领域的训练数据,增强模型的电商领域知识、安全、导购等能力。

params="--stage sft \
--model_name_or_path /data/oss_bucket_0/Qwen_14B_Chat_ms_v100/  \
--do_train \
--dataset_dir data \
--dataset xuanji \
--template chatml  \
--finetuning_type  full  \
--output_dir file_path  \
--overwrite_cache \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine  \
--logging_steps 5 \
--save_strategy epoch \
--save_steps 10000 \
--learning_rate 2e-6 \
--num_train_epochs 3.0 \
--warmup_ratio 0.15 \
--warmup_steps 0 \
--weight_decay 0.1 \
--fp16 ${fp16} \
--bf16 ${bf16} \
--deepspeed ds_config.json \
--max_source_length 4096 \
--max_target_length 4096 \
--use_fast_tokenizer False \
--is_shuffle True \
--val_size 0.0 \
"
pai -name pytorch112z
-project algo_platform_dev
-Dscript='${job_path}'
  -DentryFile='-m torch.distributed.launch --nnodes=${workerCount} --nproc_per_node=${node}  ${entry_file}'
-DuserDefinedParameters=\"${params}\"
-DworkerCount=${workerCount}
-Dcluster=${resource_param_config}
-Dbuckets=${oss_info}${end_point}

训练中间过程

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

▐  模型部署&调用

  • 达摩院千问

模型基于allspark做量化加速,部署在dashscope平台,机器为双卡A10。

# For prerequisites running the following sample


import dashscope
from dashscope import Generation
from http import HTTPStatus


dashscope.api_key = 'your-dashscope-api-key'


response_generator = Generation.call(
    model='model_name',
    prompt=build_prompt([
        {'role':'system','content':'content_info'},
        {'role':'user', 'content':'query'}
    ]),
    stream=True,
    use_raw_prompt=True,
    seed=random_num
)


for resp in response_generator:
    # when stream, you need to get the result through iteration
    if resp.status_code == HTTPStatus.OK:
        print(resp.output)
    else:
        print('Failed request_id: %s, status_code: %s, \
                  code: %s, message:%s' %
              (resp.request_id, resp.status_code, resp.code, resp.message))


# Result: 
# {"text": "汝亦来", "finish_reason": "null"}
# {"text": "汝亦来哉,幸会。\n\n汝可", "finish_reason": "null"}
# {"text": "汝亦来哉,幸会。\n\n汝可唤我一声「百晓生", "finish_reason": "null"}
# {"text": "汝亦来哉,幸会。\n\n汝可唤我一声「百晓生」,不知可否?", "finish_reason": "null"}
# {"text": "汝亦来哉,幸会。\n\n汝可唤我一声「百晓生」,不知可否?", "finish_reason": "stop"}
  • Whale私有化

部署发布:

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

模型管理:

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

from whale import TextGeneration
import json


# 设置apiKey
# 预发或线上请勿指定base_url
TextGeneration.set_api_key("api_key", base_url="api_url")


# 设置模型生成结果过程中的参数


config = {"pad_token_id": 0,  "bos_token_id": 1,  "eos_token_id": 2,  "user_token_id": 0,  "assistant_token_id": 0,  "max_new_tokens": 2048,  "temperature": 0.95,  "top_k": 5,  "top_p": 0.7,  "repetition_penalty": 1.1,  "do_sample": False,  "transformers_version": "4.29.2"}
prompt = [
    {
      "role": "user",
      "content": "content_info"
    }
]


# 请求模型
response = TextGeneration.call(
    model="model_name",
    prompt=json.dumps(prompt),
    timeout=120,
    streaming=True,
    generate_config=config)




# 处理流式结果
for event in response:
    if event.status_code == 200:
        print(event.finished)
        if event.finished is False:
            print(event.output['response'], end="")
    else:
        print('error_code: [%d], error_message: [%s]'
              % (event.status_code, event.status_message))

  • EAS

借助EAS,将代码和模型文件分离进行LLM服务部署,基于http协议提供流式输出。模型存储在oss上。

▐  模型评测

基础能力评测:在公开评测集上评估模型中英文、推理、知识问答能力表现。

业务评测:以业务人工评测为主,每个大模型任务150个评测问题。

体验问题:埋点日志获取,定期review。

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

参考链接

1.https://www.semanticscholar.org/paper/Attention-is-All-you-Need-Vaswani-Shazeer/204e3073870fae3d05bcbc2f6a8e263d9b72e776

2.https://huggingface.co/Qwen/Qwen-14B-Chat

3.https://github.com/yuanzhoulvpi2017/zero_nlp

4.https://github.com/THUDM/ChatGLM-6B/tree/main/ptuning

5.https://www.bilibili.com/video/BV1jP411d7or/?spm_id_from=333.337.search-card.all.click

6.https://arxiv.org/pdf/2305.08322v1.pdf

7.https://zhuanlan.zhihu.com/p/630111535?utm_id=0

8.https://cdn.baichuan-ai.com/paper/Baichuan2-technical-report.pdf

9.https://github.com/tatsu-lab/stanford_alpaca

Prompt设计与大语言模型微调,prompt,语言模型,人工智能,自然语言处理

团队介绍

我们是淘天集团下FC技术部智能策略团队,主要负责手机天猫的推荐和广告算法的研发与优化工作,为用户提供更精准的推荐服务,提高用户体验和满意度。此外,团队还致力于AI技术的创新应用,如智能导购等领域,并积极探索创新性的业务实践。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法文章来源地址https://www.toymoban.com/news/detail-718319.html

到了这里,关于Prompt设计与大语言模型微调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高效微调大型预训练模型的Prompt Learning方法

    近年来,自然语言处理(NLP)领域的预训练模型日益增多,应用场景也变得多样。从NER(命名实体识别)到生成任务,如何高效地使用这些模型并进行微调成为了研究和实践的重要课题。本文将深入探讨一种称为Prompt Learning的方法,通过选择模型、构建模板、定义verbalizer等步

    2024年02月02日
    浏览(32)
  • 大模型参数高效微调技术原理综述(二)-BitFit、Prefix Tuning、Prompt Tuning

    随着,ChatGPT 迅速爆火,引发了大模型的时代变革。然而对于普通大众来说,进行大模型的预训练或者全量微调遥不可及。由此,催生了各种参数高效微调技术,让科研人员或者普通开发者有机会尝试微调大模型。 因此,该技术值得我们进行深入分析其背后的机理,本系列大

    2024年02月09日
    浏览(38)
  • AI大模型预先学习笔记二:prompt提问大模型、langchain使用大模型框架、fine tune微调大模型

    1)环境准备 ①安装OpenAI库 附加 安装来源 ②生成API key ③设定本地的环境变量 ④代码的准备工作 ⑤在代码运用prompt(简单提问和返回) 2)交互代码的参数备注 temperature:随机性(从0到2可以调节,回答天马行空变化大可以选2) model:跟什么类型的model互动 role:(定义交互

    2024年01月17日
    浏览(37)
  • 浅尝prompt咒语设计:one-shot微调chatglm-6b实践信息抽取

    近期以chatgpt等文生成LLMS爆火,国内也逐渐开源了中文版的chatgpt,本文以清华大学开源的6b的chatglm为例,实践one-shot微调,设计prompt咒语在信息抽取领域的实验效果。 给定一个JD的职位要求,需要从描述中抽取出相应的实体。 例如: 相应的schema的实体为: prompt设计主要点:

    2024年02月11日
    浏览(39)
  • 利用COT思维链技术和Prompt提示语工程与微调后的大模型集成方式

    COT思维链技术和Prompt提示语工程是通过对模型的输入进行设计和优化,以引导模型生成期望的输出。 COT思维链技术,是一种通过梳理和串联关键信息,形成逻辑严谨、条理清晰的思维链。在使用大型语言模型时,我们可以将这种思维链的关键信息以连贯和逻辑一致的方式展示

    2024年02月04日
    浏览(33)
  • 飞浆AI studio人工智能课程学习(1)-大模型时代&优质Prompt

    学习记录 源自:百度飞浆-基于大模型的优质Prompt开发课 原始视频地址 原始视频:地址 朵云轩x文心一格的110万拍卖画作 创作者在一些提示词平台上进行售/Prompt Base -使用提示词能让想象力得到发挥 -发掘提示词可以产生收益 开始构建你的优质prompt 大规模预训练语言模型LL

    2024年02月10日
    浏览(44)
  • 【ChatGLM_02】LangChain知识库+Lora微调chatglm2-6b模型+提示词Prompt的使用原则

    运行langchain-ChatGLM-master下面的webui.py文件 (1) 配置知识库 新建知识库 向知识库当中添加文件 支持上传的数据格式:word、pdf、excel、csv、txt、文件夹等。但是此处我试了一下 (2) 文档数据测试 word文档测试: (3) 知识库测试模式 知识库测试只会返回输入内容在当前知识库当中的

    2024年02月14日
    浏览(30)
  • 详解AI大模型行业黑话,迅速搞懂提示工程(prompt)、向量工程(embedding)、微调工程(fine-tune)

    大家都在讨论大模型,似乎什么都可以与大模型结合,可当初学者也想上手时,却面临一堆令人头大的词汇,什么Prompt、、Embedding、Fine-tuning,看到瞬间头都大了。一堆英文就算了,还不容易查到正确解释,怎么办呢?别担心,本文就用一种有趣的方式让大家认识它们。 首先

    2024年02月02日
    浏览(31)
  • 《花雕学AI》18:AI绘画尝鲜Prompt Hunt,使用人工智能模型来创造、探索和分享艺术作品

    人工智能是当今科技领域的热门话题,它不仅可以帮助人类解决各种实际问题,也可以激发人类的创造力和艺术感。Prompt Hunt就是一个利用人工智能模型来创造、探索和分享艺术作品的AI绘画网站。它提供了三种不同的模型,分别是Stable Diffusion、DALL·E和Midjourney,它们可以根据

    2024年02月09日
    浏览(52)
  • AI 大语言模型的提示词工程 Prompt ,以及我们如何使用 Prompt 改善 AI 的思考能力

    1、Prompt 的发展 Prompt 是为了改善 AI 输出质量的一些 关键引导词 Prompt 是有一定的门槛的 但是后面马上 GPT 自己生成 Prompt 就被验证是可行的,且生成的 Prompt 符合人们的预期 为了减少创建和验证有效指令的人工工作量,来自多伦多大学、滑铁卢大学等机构的研究者提出了一种

    2024年02月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包