Llama2迄今最强开源LLM模型是如何训练出来的

Llama2迄今最强开源LLM模型是如何训练出来的

1.引言

背景资料

虽然大家耳熟能详的大语言模型很多,例如ChatGPT,Newbing,Claude,但他们都是闭源的,而Llama是meta公司开源的大语言模型系列,是可以免费商用,是羊驼模型家族的base模型,国内外众多继续微调模型都是基于Llama系列的改进版本。所以llama2这次更新的对于推广AI的平民化重要性可想而知。

2. 什么是Llama2大语言模型

Llama2是Meta开发的大型语言模型,是LLaMA的升级版本。它是一种基于变换器网络(Transformer)架构的自回归语言模型。该模型有不同的参数规模:7B、13B、70B参数。Meta开放了两个版本,一个是纯无监督训练出来的基础模型,另一个是在基础模型之上进行有监督微调SFT和人类反馈的强化学习RLHF进行训练的Chat模型。所发布的两个版本中,都提供了7B、13B和70B的三个参数规模的模型。
Llama2大语言模型在自然语言处理领域有着广泛的应用,如机器翻译、文本摘要、对话生成等。

3. Llama2的训练

使用标准Transformer 架构,使用 RMSNorm 应用预归一化、使用 SwiGLU 激活函数和旋转位置嵌入RoPE。与 Llama 1 的主要架构差异包括增加了上下文长度和分组查询注意力(GQA)。

  • Llama 2 模型接受了 2 万亿个标记的训练,上下文长度是 Llama 1 的两倍。Llama-2-chat 模型还接受了超过 100 万个新的人类注释的训练。
  • Llama 2训练语料相比LLaMA多出40%,上下文长度是由之前的2048升级到4096,可以理解和生成更长的文本。

4. Llama2的优缺点

优点:Llama 2优于目前市面上的开源LLM模型,而且上下文长度较长,可商用。

缺点:预训练数据中的语言分布,百分比 >= 0.005%。 大多数数据都是英文的,这意味着 Llama 2 在英语用例中表现最佳。

5. 中文llama2

仓库地址:https://github.com/FlagAlpha/Llama2-Chinese

在线体验:https://llama.family/

基于大规模中文数据,从预训练开始对Llama2模型进行中文能力的持续迭代升级

虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱。为了能够提升模型的中文能力,可以采用微调和预训练两种路径,其中:

  • 微调需要的算力资源少,能够快速实现一个中文Llama的雏形。但缺点也显而易见,只能激发基座模型已有的中文能力,由于Llama2的中文训练数据本身较少,所以能够激发的能力也有限,治标不治本。
  • 基于大规模中文语料进行预训练,成本高,不仅需要大规模高质量的中文数据,也需要大规模的算力资源。但是优点也显而易见,就是能从模型底层优化中文能力,真正达到治本的效果,从内核为大模型注入强大的中文能力。

6.总结

  • 未来,几乎每台计算机都有可能本地运行大型语言模型,这是一个积极的趋势。目前已经取得了巨大进展,将大型语言模型部署在设备上变得非常普遍。
  • 预计将出现领域特定微调模型,以满足不同应用需求。为每个应用领域提供专门的解决方案,特别是结合检索增强生成或工具形式的应用。
  • Llama模型的发布提供了更高的可解释性。未来的模型,如GPT-5或Llama 3,可以解释Llama 2模型的权重,从而提高了模型的可解释性。
  • 开源模型的发展将使研究人员能够按照其本来的目标和价值观进行研究,为学术界带来重要的机遇。对于研究人员来说,这是一个重要的机会,可以恢复NLP研究的发展动力,并避免过度依赖OpenAI API的情况发生。
  • 开源模型的发展和商业应用是AI领域的主要趋势,许多初创公司正在利用开源模型构建自己的AI产品。
  • 开源模型的使用带来了一些挑战,包括数据集的多样性和正确性以及模型训练和优化的技术要求。
  • 隐私和安全顾虑使得一些企业客户更倾向于在自己控制的硬件上运行推断,以确保数据的安全性。

7.应用

1
1)情感分析:

Prompt:

你是一个情感分析模型,帮助用户分析评论中的细微情感,并归类到以下的情感维度中的一个或几个,情感维度包括:功效、服务、肤感、包装、促销、价格、成分、使用部位、使用方法、科技、体验、活动。并给出你认为的情感强度,量化量化上述情绪,值是1-5,答案用json格式返回,示例是:[{“功效”: 1}, {“促销”: 4}, {“价格”: 3}],并在答案末尾给出导致这种情感的原因?

用户评论:特别好用。用完皮肤不紧绷,而且脸特别的干净,亮。值得推荐!还是比较满意的。还送小赠品。

Response:

[{“功效”: 5}, {“肤感”: 4}, {“服务”: 4}, {“包装”: 4}, {“促销”: 5}]

导致这种情感的原因是产品的功效非常好,使用后皮肤不紧绷,干净亮丽,用户觉得非常满意。此外,产品的肤感也很好,使用起来很舒适。用户还提到了服务和包装都很满意,而且还有额外的小赠品,这些都增加了用户的满意度。

1
2) 自然语言转SQL

Prompt:

你是一个数据库专家,brand表的数据结构如下,请根据下面的表结构根据用户的需求撰写SQL CREATE TABLE brand ( id bigint(20) NOT NULL AUTO_INCREMENT, status varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, version int(11) NOT NULL DEFAULT 0, created_by varchar(255) COLLATE utf8mb4_bin NOT NULL, last_modified_by varchar(255) COLLATE utf8mb4_bin NOT NULL, time_created datetime NOT NULL, time_updated datetime NOT NULL, country varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, english_name varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, name varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, nick_name varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL, user_name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, is_not_minority varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, pic_url varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT ‘品牌图片url’, official_weibo_address varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT ‘官方微博地址’, initials varchar(4) COLLATE utf8mb4_bin DEFAULT NULL COMMENT ‘拼音首字母’, belong_group varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT ‘所属集团’, PRIMARY KEY (id) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=876 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

问题:查询下属于中国的化妆品品牌,country字段是CHINA,打印品牌名称和微博地址

Response:

根据您的需求,可以使用以下SQL查询语句来获取属于中国的化妆品品牌的名称和微博地址:

1
2
3
SELECT `name`, `official_weibo_address`
FROM `brand`
WHERE `country` = 'CHINA';

这将从brand表中选择nameofficial_weibo_address列,其中country列的值等于’CHINA’。结果将返回符合条件的品牌名称和官方微博地址。

1
3) 信息提取

Prompt:

你是一个信息提取模型,请提取用户评论中提到的关于化妆品的成分词语,用逗号分隔,返回列表格式即可。 用户评论: 雅诗兰黛粉水400ml添加的保湿成分高达92%,海藻糖、玻尿酸、角鲨烷都是保湿界大佬,还有舒缓修护的雪绒花和甘草酸二钾等神级舒缓成分,一瓶满满的精华,真的堪比精华水

Response:

海藻糖, 玻尿酸, 角鲨烷, 雪绒花, 甘草酸二钾

1
4)广告判断

Prompt:

你是一个广告判别模型,请判别下面用户评论是否是一则广告推销,回答是或否。 用户评论: 科颜氏520送福利咯 | 超能惊喜、宠你到底!|||礼赠拿到手软科颜氏淡斑精华? 让你由内而外自信发光 ?科颜氏A醇精华? 实力加乘肌肤夜间修护力 ?科颜氏紫玻A面霜? 无惧年龄束缚,做最酷的自己 ?科颜氏紫玻A眼霜? 一瓶直击四大眼部问题,练就超A眼眸 ?

Response:

1
5)聚类分组

Prompt:

你是一个聚类模型,对下面的护肤科技类词语进行聚类分组,给每组一个类别名称,并对分组的意义进行解释

聚合科技 前进科技 滋润倒入技术 微米净透科技 抗氧化科技 护肤技术 海藻纤维膜布技术 高压注氧纳米雾化技术 玻尿酸分层技术 智慧亮肌精技术 双生科技 透明油技术 Aboolute六大技术 冻干技术 水珠凝露科技 透皮防晒技术 专利防脱科技 精细微乳化科技 仿生气息诱蚊技术 遮瑕技术 冷萃科技 渗科技 水凝技术 纳米级科技 精油雾化技术 视黄醇专利抗衰老科技 夸迪独5D玻尿酸技术 超分子包技术 Micellar微米科技 亮光感科技 透明质酸纳米乳液包裹技术 0H2O无水科技 精细微乳化技术 防晒养护科技 抗糖技术 微乳包裹技术 TE-Cell技术 MICELLE胶束科技 闪释技术 微囊包裹技术 临界乳化技术 低温冷风干燥萃取技术 麦色滤科技 精华顶级科技 IPF技术 空气触融科技 多光谱混合扫描技术 MVE渐层缓释导入技术 高端护肤科技 透气防晒技术 白茶精粹取技术 年度敏肌舒缓修护科技 精华封装技术 专利植物取技术 液氮冻干技术 生物三种防晒技术 喷雾技术 乳化技术 细胞抓氧白科技 精氨酸活性尖端护肤科技 胶束净颜技术 左旋糖复合技术

Response:

根据给定的护肤科技类词语,我可以对它们进行聚类分组并为每组提供一个类别名称。以下是对这些词语的聚类分组和对分组意义的解释:

  1. 护肤科技类:
    1. 护肤技术
    2. 护肤技术是一个广泛的类别,涵盖了各种与护肤相关的技术和创新。
  2. 保湿类科技:
    1. 滋润倒入技术
    2. 玻尿酸分层技术
    3. 水珠凝露科技
    4. 透明油技术
    5. 透明质酸纳米乳液包裹技术
    6. 0H2O无水科技
    7. 微乳包裹技术
    8. 微囊包裹技术
    9. 临界乳化技术
    10. MVE渐层缓释导入技术
    11. 乳化技术
    12. 胶束净颜技术
    13. 这些科技词语都与保湿和滋润肌肤相关,采用不同的技术手段来提供肌肤所需的水分和滋润度。
  3. 抗氧化类科技:
    1. 抗氧化科技
    2. 专利防脱科技
    3. 超分子包技术
    4. TE-Cell技术
    5. IPF技术
    6. 这些科技词语强调了抗氧化的功能,可以帮助减少自由基对肌肤的损害,保护肌肤健康。
  4. 防晒类科技:
    1. 透皮防晒技术
    2. 闪释技术
    3. 透气防晒技术
    4. 多光谱混合扫描技术
    5. 年度敏肌舒缓修护科技
    6. 生物三种防晒技术
    7. 白茶精粹取技术
    8. 这些科技词语指向了与防晒功能相关的技术和创新,帮助保护肌肤免受紫外线的伤害。
  5. 抗衰老类科技:
    1. 智慧亮肌精技术
    2. 视黄醇专利抗衰老科技
    3. 高端护肤科技
    4. 年度敏肌舒缓修护科技
    5. 精华封装技术
    6. 细胞抓氧白科技
    7. 这些科技词语强调了抗衰老的功能,采用不同的技术手段来改善肌肤的光泽度、减少细纹和皱纹等衰老迹象。
  6. 其他类科技:
    1. 聚合科技
    2. 前进科技
    3. 海藻纤维膜布技术
    4. 高压注氧纳米雾化技术
    5. 双生科技
    6. 仿生气息诱蚊技术
    7. 冻干技术
    8. 冷萃科技
    9. 渗科技
    10. 纳米级科技
    11. 精油雾化技术
    12. 遮瑕技术
    13. 麦色滤科技
    14. 精华顶级科技
    15. 空气触融科技
    16. MICELLE胶束科技
    17. 左旋糖复合技术
    18. 这些科技词语归类为其他类科技,涵盖了各种护肤技术和创新,包括聚合科技、纳米级科技、冻干技术等。这些技术可能针对不同的护肤需求和功能,如清洁、保湿、抗衰老等。

请注意,以上分类和类别名称是根据词语的表面含义进行的推测和归类,并不能确保完全准确。在实际应用中,需要根据具体的领域知识和上下文来进行更准确的分类。

1
6)协助构建词表

Prompt:

化妆品中关于容量的关键词有哪些?

Response:

在化妆品领域,与容量相关的关键词包括:

  1. 毫升(ml):表示产品的容量大小,通常用于液体和乳液类产品的容量表示,如面霜、精华液等。
  2. 克(g):用于固体或半固体产品的重量表示,如粉底、眼影等。
  3. 盎司(oz):一种容量单位,常用于国际市场,特别是美国市场,表示液体产品的容量。
  4. 液体盎司(fl. oz):用于液体产品的容量表示,与普通盎司稍有区别。
  5. 毫升/盎司(ml/fl. oz):一些化妆品品牌为了适应不同市场的需求,会同时标注毫升和盎司两种容量单位。
  6. 容器尺寸(dimension):指容器的尺寸大小,包括高度、宽度和深度等,有时也会与容量相关联。
  7. 容器类型(container type):指容器的种类,如瓶子(bottle)、管状容器(tube)、罐子(jar)等,不同容器类型所容纳的容量可能有所不同。
  8. 标准容量(standard capacity):指化妆品行业中常见的容量规格,如30ml、50ml、100ml等。
  9. 旅行装(travel size):指小容量的化妆品包装,方便携带,通常在100ml以下。
  10. 大容量(jumbo size):指较大容量的化妆品包装,通常超过常见的标准容量,如200ml、500ml等。

这些关键词在购买化妆品时可以帮助消费者了解产品的容量大小,以便根据个人需求做出选择。

8.APP相关应用

1)open-interpreter

https://github.com/KillianLucas/open-interpreter

interpreter -y –fast #使用chatgpt3.5

示例1:对excel进行分析

Prompt:

分析excel文件/Users/admin/Documents/lavector/商品详情.xlsx,统计商品价格列,画出倩碧商品的价格区间,要求品牌名称为倩碧,价格区间为4档,分别是0-100,100-200,200-500,500以上,打印统计结果,保存绘图结果到/Users/admin/Documents/lavector/price_plot.png

Response:

Plan:

1 Read the Excel file and extract the data.

2 Filter the data to include only the rows with the brand name “倩碧”.

3 Extract the price column from the filtered data.

4 Create four price ranges: 0-100, 100-200, 200-500, 500 and above.

5 Count the number of prices falling into each range.

6 Print the statistics.

7 Plot the price ranges and their corresponding counts.

import pandas as pd

import matplotlib.pyplot as plt

df = pd.read_excel(‘/Users/admin/Documents/lavector/商品详情.xlsx’)

df.head()

warn(“Workbook contains no default style, apply openpyxl’s default”)

商品id 一级分类 二级分类 三级分类 … 商品级别 规格

官宣功效 商品价格

0 89 护肤 面部护理 化妆水 … 高端 200ml

保湿补水,深层清洁,二次清洁,去角质,提亮焕亮,抗敏舒敏 160.0

1 90 护肤 面部护理 乳液 … 高端 【活力焕亮】偏油肌,10ml+115ml

保湿补水,控油,滋养滋润,淡纹抚纹,水油平衡,提亮焕亮,去细纹,抗敏舒敏 299.0

2 98 护肤 面部护理 卸妆 … 高端 125ml 卸妆

220.0

3 104 彩妆 脸部 底妆 … 高端 61,30ml

裸妆,遮瑕,均匀肤色,持久不脱妆,防汗,防晒,眼部遮瑕,滋润滋养,控油,保湿 310.0

4 105 护肤 面部护理 洁面 … 高端 200ml

控油,深层清洁,保湿补水,镇静舒缓,软化角质,弱酸性,清洁肌肤污垢,去角质,温和不刺激 185.0

[5 rows x 14 columns]

filtered_df = df[df[‘品牌名称’] == ‘倩碧’]

filtered_df.head()

商品id 一级分类 二级分类 三级分类 … 商品级别 规格

官宣功效 商品价格

0 89 护肤 面部护理 化妆水 … 高端 200ml

保湿补水,深层清洁,二次清洁,去角质,提亮焕亮,抗敏舒敏 160.0

1 90 护肤 面部护理 乳液 … 高端 【活力焕亮】偏油肌,10ml+115ml

保湿补水,控油,滋养滋润,淡纹抚纹,水油平衡,提亮焕亮,去细纹,抗敏舒敏 299.0

2 98 护肤 面部护理 卸妆 … 高端 125ml 卸妆

220.0

3 104 彩妆 脸部 底妆 … 高端 61,30ml

裸妆,遮瑕,均匀肤色,持久不脱妆,防汗,防晒,眼部遮瑕,滋润滋养,控油,保湿 310.0

4 105 护肤 面部护理 洁面 … 高端 200ml

控油,深层清洁,保湿补水,镇静舒缓,软化角质,弱酸性,清洁肌肤污垢,去角质,温和不刺激 185.0

[5 rows x 14 columns]

price_column = filtered_df[‘商品价格’]

price_column.head()

0 160.0

1 299.0

2 220.0

3 310.0

4 185.0

Name: 商品价格, dtype: float64

price_ranges = [0, 100, 200, 500, float(‘inf’)]

price_counts = pd.cut(price_column, price_ranges, right=False).value_counts()

price_counts

[200.0, 500.0) 59

[100.0, 200.0) 20

[500.0, inf) 9

[0.0, 100.0) 1

Name: 商品价格, dtype: int64

plt.bar(price_counts.index.astype(str), price_counts.values)

plt.xlabel(‘Price Range’)

plt.ylabel(‘Count’)

plt.title(‘Price Range Distribution for 倩碧’)

plt.show()

<BarContainer object of 4 artists>

Text(0.5, 0, ‘Price Range’)

Text(0, 0.5, ‘Count’)

Text(0.5, 1.0, ‘Price Range Distribution for 倩碧’)

:12: UserWarning: Glyph 30887 (\N{CJK UNIFIED IDEOGRAPH-78A7}) missing from current font.

Here are the statistics and the plot for the price range distribution of 倩碧 products:

• Price Range [0-100): 1 product

• Price Range [100-200): 20 products

• Price Range [200-500): 59 products

• Price Range [500 and above): 9 products

🌆 Price Range Distribution for 倩碧

保存上面的绘图结果到/Users/admin/Documents/lavector/price_plot.png

plt.bar(price_counts.index.astype(str), price_counts.values)

plt.xlabel(‘Price Range’)

plt.ylabel(‘Count’)

plt.title(‘Price Range Distribution for 倩碧’)

plt.savefig(‘/Users/admin/Documents/lavector/price_plot.png’)

<BarContainer object of 4 artists>

Text(0.5, 0, ‘Price Range’)

:12: UserWarning: Glyph 30887 (\N{CJK UNIFIED IDEOGRAPH-78A7}) missing from current font.

Text(0, 0.5, ‘Count’)

Text(0.5, 1.0, ‘Price Range Distribution for 倩碧’)

sys:1: UserWarning: Glyph 30887 (\N{CJK UNIFIED IDEOGRAPH-78A7}) missing from current font.

绘图结果已保存到文件 [/Users/admin/Documents/lavector/price_plot.png]。您可以在该位置找到绘图结果。

示例2:写一个前后端投票网页

Prompt:

帮我写一个投票功能的前后端程序,前端要求投票网页的主要内容是对本次团建去哪玩进行投票,可选地区是北京八达岭长城,青岛看海,杭州游西湖,自驾游新疆,所有人投票后自动显示投票结果。

Response:

main.py后端页面

import flask

from flask import Flask, request, jsonify

from flask_cors import CORS

app = Flask(name)

CORS(app, supports_credentials=True)

# 投票结果

votes = {

​ ‘北京八达岭长城’: 0,

​ ‘青岛看海’: 0,

​ ‘杭州游西湖’: 0,

​ ‘自驾游新疆’: 0

}

# 处理投票请求

@app.route(‘/vote’, methods=[‘POST’])

def vote():

​ option = request.form.get(‘option’)

​ if option in votes:

​ votes[option] += 1

​ return jsonify({‘message’: ‘投票成功’})

​ else:

​ return jsonify({‘message’: ‘投票选项无效’})

# 显示投票结果

@app.route(‘/results’, methods=[‘GET’])

def results():

​ return jsonify(votes)

if name == ‘main‘:

​ app.run(debug=True)

index.html前端页面

投票

投票

投票结果

参考资料

https://arxiv.org/abs/2307.09288

Llama 2 - Meta AI

https://zhuanlan.zhihu.com/p/645886809


Llama2迄今最强开源LLM模型是如何训练出来的
https://johnson7788.github.io/2023/09/18/Llama2%E8%BF%84%E4%BB%8A%E6%9C%80%E5%BC%BA%E5%BC%80%E6%BA%90LLM%E6%A8%A1%E5%9E%8B%E6%98%AF%E5%A6%82%E4%BD%95%E8%AE%AD%E7%BB%83%E5%87%BA%E6%9D%A5%E7%9A%84/
作者
Johnson
发布于
2023年9月18日
许可协议