大语言模型在天猫AI导购助理项目的实践!

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

ChatGPT基本原理

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

图片

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

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

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

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

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

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

算法内核——Transformer

由 Encoder 和 Decoder 两个部分组成

图片

技术交流群

建了技术交流群!想要进交流群的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

方式①、添加微信号:mlc2060,备注:技术交流
方式②、微信搜索公众号:机器学习社区,后台回复:技术交流

在这里插入图片描述

Prompt设计

什么是prompt?

图片

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

图片

这下对了!

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

图片

prompt基本技巧

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

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

给手机天猫写首诗

图片

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

图片

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

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

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

需要总结的文本是:

'''

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

'''

3.指定输出格式

bad casegood case

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

图片

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

图片

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

bad casegood case

给我推销一款男士洗面奶

图片

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

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

图片

图片

Few shot进阶

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

图片

Chain of Thought(Cot)

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

one-shotCot

model input:

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

A:答案是11

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

model output:

图片

model input:

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

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

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

model output:

图片

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

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

Search API & GPT

图片

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

当前日期:{current_date}

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

用户Query: {query}

回复语言: {reply_language}
"""

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

图片

ReAct框架

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

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

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

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

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

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

大模型SFT(supervised fine tuning)

预训练 VS 微调

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

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

图片

业务数据从哪来?

  1. 人工标注

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

图片

P-tuning

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

图片

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

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

LoRA

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

图片

图片

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

LoRA VS 全参数微调

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

C-Eval评估

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

图片

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

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

图片

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

项目背景

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

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

图片

算法框架

图片

语料收集

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

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

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

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

模型训练

base模型选型

中文评测

图片

数学评测

图片

训练平台: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}

训练中间过程

图片

模型部署&调用

  • 达摩院千问

模型基于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私有化

部署发布:

图片

模型管理:

图片

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。

参考链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/105972.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Postman接口测试,全网最详细教程

Postman的脚本可以导出多种语言的脚本&#xff0c;方便二次维护开发。 Python的requests库&#xff0c;支持python2和python3&#xff0c;用于发送http/https请求 使用unittest进行接口自动化测试 0 1****环境准备 1、安装python &#xff08;使用python2或3都可以&#x…

【表面缺陷检测】铝型材表面缺陷检测数据集介绍(含xml标签文件)

一、铝型材介绍 铝型材是一种由铝合金材料制成的&#xff0c;具有固定截面形状和尺寸的条形建材。由于其优良的物理性能和广泛的应用领域&#xff0c;铝型材在现代工业和生活中发挥着重要的作用。 1、铝型材的分类 根据截面形状的不同&#xff0c;铝型材可分为角铝、槽铝、工…

鉴源实验室 | AUTOSAR E2E:车载通信的安全保障

作者 | 沈平 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 随着汽车行业逐步走向电气化、智能化&#xff0c;车载系统的软件和硬件复杂度不断上升。如何确保这些复杂系统中的数据通讯安全和…

在线设计数据库表用Itbuilder,极简易用真香!!!

“如果您想要一个具有快速搜索运行的高性能数据库&#xff0c;那么数据库设计是必不可少的&#xff0c;花时间设计数据库将帮助您避免效率低下和高冗余等问题”。 在线数据库设计软件itbuilder&#xff0c;界面清爽漂亮&#xff0c;功能简洁&#xff0c;没有多余设置很容易上手…

DevOps持续集成-Jenkins(4)

文章目录 DevOpsDevOps概述Jenkins流水线任务入门⭐Jenkins流水线任务的Hello World体验⭐Jenkins流水线语法例子Jenkins流水线语法生成器⭐ Jenkins实战4&#xff1a;构建pipeline&#xff08;流水线&#xff09;的Jenkins项目⭐项目架构图Jenkins实战4的初步流水线模板&#…

直播预告 | YashanDB 2023年度发布会正式定档11月2日,邀您共同见证国产数据库发展实践!

11月2日&#xff0c;YashanDB 2023年度发布会将于云端直播开启&#xff0c;发布会以 「惟实励新」 为主题&#xff0c;邀请企业用户、合作伙伴、广大开发者共同见证全新产品与解决方案。届时发布会将在墨天轮社区同步进行&#xff0c;欢迎大家报名&#xff01; 惟实求真。Yasha…

redis中的io多线程(线程池)

文章目录 redis多线程模型redis为什么引入I/O多线程I/O多线程模型 源码解析测试设置连接建立数据传输线程调度开启io线程startThreadedIO关闭io线程stopThreadedIO redis多线程模型 redis为什么引入I/O多线程 Redis 的性能瓶颈在网络 IO 的处理上。Redis 是网络 IO 密集型&am…

《ATTCK视角下的红蓝对抗实战指南》一本书构建完整攻防知识体系

一. 网络安全现状趋势分析 根据中国互联网络信息中心&#xff08;CNNIC&#xff09;发布的第51次《中国互联网络发展状况统计报告》&#xff0c;截至2022年12月&#xff0c;我国网民规模为10.67亿&#xff0c;互联网普及率达75.6%。我国有潜力建设全球规模最大、应用渗透最强的…

雪糕冰淇淋经营配送小程序商城效果如何

雪糕冰淇淋是很多年轻人喜欢的食品之一&#xff0c;市面上的雪糕品牌类型众多&#xff0c;销售模式主要为厂家批发、经销商零售等&#xff0c;由于雪糕冰淇淋的易化性&#xff0c;很多用户会选择就近购买&#xff0c;但制作技术升级和长途冷藏技术下&#xff0c;网购成为另一种…

建模仿真软件 Comsol Multiphysics mac中文版软件介绍

COMSOL Multiphysics mac是一款全球通用的基于高级数值方法和模拟物理场问题的通用软件&#xff0c;拥有、网格划分、研究和优化、求解器、可视化和后处理、仿真 App等相关功能&#xff0c;轻松实现各个环节的流畅进行&#xff0c;它能够解释耦合或多物理现象。 附加产品扩展了…

基于Java的电动车实名挂牌系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

NLog详解

目录 1.简介 2.项目中使用NLog 2.1 快速使用NLog 2.2 通过配置文件使用NLog 3.NLog配置参数详解 3.1 全局配置 3.2 根元素 3.2.1 targets 3.2.1.1 layout 3.2.2 rules 3.2.3 extensions 3.2.4 include 3.2.5 variable 4.附录 1.简介 NLog是一个基于.NET平台编写…

minio + linux + docker + spring boot实现文件上传与下载

minio docker spring boot实现文件上传与下载 1.在linux上安装并启动docker2.在docker中拉取minio并启动3.Spring Boot 整合 minio4.测试 minio 文件上传、下载及图片预览等功能 1.在linux上安装并启动docker 检查linux内核&#xff0c;必须是3.10以上 uname ‐r安装docker…

基于aop 代理 Sentinel Nacos配置控制包装类实现原理

基于aop & 代理 & Sentinel & Nacos配置控制包装类实现原理 Hi&#xff0c;我是阿昌&#xff0c;今天记录下看sentinel源码结合业务实现的思路基于aop & 代理 & Sentinel & Nacos配置控制包装类实现原理&#xff1b;下面并不会手把手的记录方案的实现…

绿野仙踪不仅是童话,还是便宜又好用的产品测试法!

以 ChatGPT 为代表的大语言模型爆火后&#xff0c;推动了对话类人工智能产品的高速发展&#xff0c;我们已经看到了如智能助理、问答系统、自动写作等多种类型的个性化对话类 AI 服务。 AI 能力的提升让人们对智能 AI 产品的期望越来越高&#xff0c;相关产品的用户体验也因此变…

基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现校友社交平台管理系统演示 摘要 校友社交系统提供给用户一个校友社交信息管理的网站&#xff0c;最新的校友社交信息让用户及时了解校友社交动向,完成校友社交的同时,还能通过论坛中心进行互动更方便。本系统采用了B/S体系的结构&#xff0c;使用了java技…

PPT文档图片设计素材资源下载站模板源码/织梦内核(带用户中心+VIP充值系统+安装教程)

源码简介&#xff1a; PPT文档图片设计素材资源下载站模板源码&#xff0c;作为织梦内核素材资源下载站源码&#xff0c;它自带了用户中心和VIP充值系统&#xff0c;也有安装教程。 织梦最新内核开发的模板&#xff0c;该模板属于素材下载、文档下载、图库下载、PPT下载、办公…

疯狂java 三-六章

第三章 数据类型和运算符 Java语言是强类型语言&#xff0c;意思是每个变量和每个表达式都有一个在编译时就确定的类型&#xff0c;所有的变量都必须显式声明类型 标识符就是类&#xff0c;变量、方法命名的符号 标识符不能包含空格 标识符只能包含美元符($)&#xff0c;不…

python自动化测试平台开发:自动化测试平台简介

一.测试平台简介 为什么需要测试平台 已有的开源测试平台不能满足需要&#xff0c;不要轻易造轮子 需要公司级别的定制 需要整合公司内部的多套平台 例子&#xff1a;DevOps平台、精准化测试平台、质量监控平台等等 常见的测试平台开发模式 大一统模式&#xff08;适合简单的…

基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】

基于springboot实现校友社交平台管理系统演示 摘要 校友社交系统提供给用户一个校友社交信息管理的网站&#xff0c;最新的校友社交信息让用户及时了解校友社交动向,完成校友社交的同时,还能通过论坛中心进行互动更方便。本系统采用了B/S体系的结构&#xff0c;使用了java技…