雪花-Cortex 大规模语言模型功能
在这篇博客里,我会聊聊Snowflake Cortex LLM功能的关键特性,并深入讲解一下。在了解“Cortex LLM功能”之前,我们先来做一点背景介绍。首先,我们先来了解一下Snowflake Cortex是什么。
雪flake Cortex 是一项完全管理的服务,它直接将这些尖端的人工智能和机器学习功能引入 Snowflake 环境中的数据。Cortex 最棒的一点是,它允许像我们这样的用户充分利用我们的数据——无论是结构化数据还是非结构化数据,通过使用最先进的 AI 和 ML 技术,Cortex 让我们能够轻松地分析数据,深入挖掘,并利用预构建的高性能模型和向量搜索在 Snowflake 内创建强大的 AI 应用。使用 Snowflake Cortex,我们可以。
Snowflake中的大语言模型(LLM)可以通过Snowflake Cortex函数立即访问,省去了繁琐的设置过程。这使得在机器学习和人工智能领域的LLM模型有更多的机会。
Snowflake Cortex 的两个主要功能让用户能够从数据中获得洞察:
雪flake Cortex的大语言模型功能: 这些强大的SQL和Python函数利用大型语言模型(LLM),帮助用户轻松地理解、查询、翻译、总结和生成自由格式的文本。这些模型使自然语言处理(NLP)活动例如文本生成、分类和翻译成为可能。在这篇博客中,我们将讨论这一类功能。
雪花Cortex ML的功能: 这些功能通过使用机器学习算法来发现数据中的模式来进行预测。这些服务适用于多种应用场景,例如文本分析、异常检测和预测。在下文中,我们将详细说明。时间序列函数(预测、异常检测和贡献探索器)和分析函数(如分类)是其中的例子。
接下来,让我们详细了解Cortex LLM功能。
以下是一些我们必须要了解的关键术语:
了解一些关键术语总是很有帮助的,在深入探讨皮层功能之前,我们可以更好地理解这些概念之间的联系。下面让我们来了解这些术语:
这些AI模型是用来处理和生成类似于人类文本的,它们是在海量数据上训练的。可以这么理解,这些模型的输出就是根据我们的需求生成的文本。
搞糊涂了吗?这是Snowflake的博客,为什么我们要聊到Meta、Google这些公司?这是因为这些公司已经开源了可以在所有平台使用的大型语言模型 (LLM)。确实,Snowflake也有自己的LLM模型,即Snowflake Arctic。
这些都是用来生成洞察的LLM模型。每个模型都是我将要在接下来的部分提到的公司开发的。
一个文本单元是Snowflake Cortex LLM函数处理的最小文本单位,_大约相当于四个字符_。你可以把它想象成模型处理的基本单位,就像处理的每个小块文本。如下所示(这只是为了理解):
令牌说明
我们经常会看到不同的 LLM 模型配置,如 llama3–8b 和 llama3–70b。这些数字表示模型的参数量。比如,llama3–8b 使用了 80亿参数,而 llama3–70b 使用了 70亿参数。模型参数越多,其输出的准确性也越高,但参数多的模型计算需求也大,因此 llama3–70b 比 llama3–8b 更昂贵。
一个范围在0到1之间(包括0和1)的值,用于控制语言模型输出的随机程度。温度较高(如0.7)会使输出更随机多变,温度较低(如0.2)则使输出更加确定和集中。下面是它的用法。
SELECT SNOWFLAKE.CORTEX.COMPLETE( 'llama3-70b', [ { 'role': 'user', 'content': '如何查询DEMO_DB.DEMO_SCHEMA.DEMO_CUSTOMER表中的总记录数?' } ], { 'temperature': 0.2, 'max_tokens': 100 } );
这又是一个非常广泛的话题。但为了简单起见,我们可以把它看作是一段文本或问题,提交给LLM模型以生成回复的图示。下面是一个图解表示:
大语言模型中的提示词
在需求高峰期,Snowflake Cortex LLM 功能可能会被限流,因为所有 Snowflake 客户都可以使用 LLM 功能。账户级别没有设置使用限额。限流的请求会收到错误信息,并应稍后重试。
SNOWFLAKE数据库中的CORTEX_USER角色包括允许用户调用Snowflake Cortex大模型函数的权限。默认情况下,CORTEX_USER角色会自动赋予PUBLIC角色。PUBLIC角色自动赋予所有用户和角色,因此,您账户中的所有用户都可以使用Snowflake Cortex的大模型函数。
以下是显示数据库角色的详细信息以及用于开始使用Cortex LLM功能的关键命令。该命令指明应使用的角色是哪个。
数据库角色名是:‘CORTEX_USER’
要做同样的事情,可以参考以下大致步骤:
切换到 ACCOUNTADMIN 角色; 创建名为 demo_cortex_user_role 的角色; 将 SNOWFLAKE.CORTEX_USER 数据库角色授权给 demo_cortex_user_role; 将 demo_cortex_user_role 角色授权给用户 SOMEN202410; 将 DEMO_MEDIUM_WH 仓库的所有权限授予 demo_cortex_user_role; 切换到 demo_cortex_user_role 角色;
发布这个之后,我们就可以开始使用Cortex的各项功能了。
通过Snowflake Cortex,您可以轻松快速地访问最优秀的大规模语言模型(LLM),这些模型由像Mistral、Reka、Meta和Snowflake(Snowflake北极)这样的组织的科学家训练而成。
下图展示了这些,图片展示了这些模型如何在平台内原生可用及其类别。这些模型可以根据需要使用,因此也能根据需要获得相应的准确性。
Snowflake 原生支持的这些模型
LLM功能包含各种类别,下图展示了Snowflake当前提供的各种类别。
大语言模型(LLM)功能分类
我们现在来了解一下Snowflake中一些关键LLM功能的详细信息,这些功能利用上面提到的模型来获得关键见解。在这篇博客中,我们会介绍这些函数。
“COMPLETE”功能在其最基本的形式下,将从单个字符串提示生成答案。另一方面,它也可以管理多轮的交互式聊天会话,当有多次请求和回答。用户还可以调整输出的长度和风格。Snowflake Cortex COMPLETE 功能支持性能不同、延迟各异、成本不同的模型。这些模型经过精心挑选,以适应常见的应用场景。
示例 (A):下面是一些通过提示来提问的通用问题示例。
-- 完成 Snowflake 内核: SELECT SNOWFLAKE.CORTEX.COMPLETE('snowflake-arctic', '什么是云计算?'); SELECT SNOWFLAKE.CORTEX.COMPLETE('llama3-70b', 'Snowflake 不只是一个数据仓库吧?'); SELECT SNOWFLAKE.CORTEX.COMPLETE('mistral-large', 'Snowflake 内核是什么?');
这就是我们得到回复的方式。
例子(B): 让我们看看表格能否给我们提供一些答案。问题如下:
这是问题的说明
如果我们发现需要从这些数据中获取回复,以输出文本结果的形式来判断是否能查询这个字段以及能否识别性别。
下面是怎么做:
SELECT SNOWFLAKE.CORTEX.COMPLETE( 'mistral-large', CONCAT('性别识别: <DEMO_CUSTOMER>', C_SALUTATION, '</DEMO_CUSTOMER>') ) FROM DEMO_DB.DEMO_SCHEMA.DEMO_CUSTOMER LIMIT 2; 注释: DEMO_CUSTOMER 是表名。 注释: 我们只想查询前2行数据。 注释: 使用的模型是 mistral-large, 它是来自 mistral.ai 公司的。
如下是输出结果:
示例(C): 我们来看看能不能用这个函数生成一些合成数据。
SELECT SNOWFLAKE.CORTEX.COMPLETE('mistral-large', '生成一些用于员工表的合成数据,该表有4列2行');
这就是我们怎么得到那些数据。
再来看一些例子: 我们再来看看用这个COMPLETE功能还能怎么玩。
SELECT SNOWFLAKE.CORTEX.COMPLETE( 'gemma-7b', [ { 'role': 'user', 'content': '给我 DEMO_DB.DEMO_SCHEMA.DEMO_CUSTOMER 表中 c_customer_sk 列的所有值' } ], { 'temperature': 0.7, 'max_tokens': 100 } ); SELECT SNOWFLAKE.CORTEX.COMPLETE( 'llama3-70b', [ { 'role': 'user', 'content': '如何查询 DEMO_DB.DEMO_SCHEMA.DEMO_CUSTOMER 表中的总的记录数量' } ], { 'temperature': 0.2, 'max_tokens': 100 } );
SUMMARIZE 函数可以将给定的英文文本总结成摘要。如果我们有一个很长的段落,并且想要生成 1 或 2 行的摘要,就可以用这个函数来实现。
SELECT SNOWFLAKE.CORTEX.SUMMARIZE( 'Snowflake 的 Cortex 完整功能可以通过自然语言提示生成合成数据,成为一个强大的工具,能够创建逼真的合成数据集,可用于测试、模型训练和数据挖掘,同时避免使用敏感或真实世界的数据。' ) AS summary;
就是这样工作的。
我们可以获得每条记录在表中各列值的摘要信息,甚至可以做到这一点。如下所示的查询如下:
(Note: There seems to be a redundancy in the sentence structure. A more fluent and accurate translation would be: 我们甚至可以获取每条记录在表中各列值的汇总信息。如下所示的查询如下:)
Corrected version based on suggestions:
我们甚至可以获取每条记录在表中各列值的汇总信息。如下所示的查询如下:
-- 其中,这 DEMO_CALL_CENTER 是表名,这 CC_MKT_DESC 是列名。
将指定文本从任何支持的语言翻译成其他任何语言。此功能支持以下语言代码:
支持的语言代码(截至2024年)
当它执行时,这个命令会把语言从英语翻译成法语。
SELECT SNOWFLAKE.CORTEX.TRANSLATE('Snowflake Cortex 很神奇', 'en', 'fr') AS Tran_Otpt;
从英语到法语的翻译
以下是我们在表格级别上使用相同功能将英语转换为法语的方式。
SELECT CC_MKT_CLASS AS 英文名称, SNOWFLAKE.CORTEX.TRANSLATE(CC_MKT_CLASS, 'en', 'fr') AS 法文名称 FROM DEMO_CALL_CENTER LIMIT 10;
转换后
注:根据上下文,“o/p”可能是“output”的缩写。若“o/p post conversion”指的是转换后的结果,直接翻译为“转换后”即可。如果“o/p”具体指某个特定术语或上下文,请提供更多背景信息以便更准确地翻译。根据给定信息,这里的翻译是尽可能符合原意的表达。
SENTIMENT函数会给出一个范围在-1到1之间的分数,其中,-1表示最负面,1表示最正面,0则表示中立,对给定的英文文本的情感进行评分。我们通过几个例子来验证一下。
SELECT SNOWFLAKE.CORTEX.SENTIMENT('《Snowflake 数据云世界巡回- Bangalore》非常好和非常棒') as score;
这就是输出
将自由文本数据分类到我们提供的各类别中。此功能返回一个字符串,该字符串包含 JSON 对象。该 JSON 对象包含输入文本被分类的类别。
Snowflake提供的例子
在这里可以看到,这个函数能够通过正确的函数标签对文本进行分类标注,并且结果还是以 JSON 格式输出。
以下是我在写这篇博客时Cortex LLM的功能:
Cortex LLM相关功能
大家都知道,Snowflake作为SaaS可以在所有云服务提供商和大多数区域中使用。因此,能否使用Cortex功能取决于它在各个区域和云提供商中的可用情况。下图(图片来源Snowflake)显示了可用的位置。
图片来自:Snowflake
请注意,我仅提供了截图的一部分。如果您想了解全部详情,请参考该链接,以获取功能的可用情况的完整细节。
虽然 Snowflake Cortex LLM 功能可以从结构化和非结构化数据中提取有意义的见解,但是理解相关的成本和使用限制也很重要。Snowflake Cortex LLM 功能的计算成本取决于处理的 token 数量。这些功能分析的最小文本单位是 token,大约相当于四个字符的长度。具体的 LLM 函数和模型决定了每处理一百万个 token 的成本。
有几个重要的表格需要使用来追踪 LLM 功能的成本。具体包括:
这些对象是通过Snowflake的共享功能传入的。可以查询这些对象的方式如下:
-- 以下查询将提供汇总视图的信息 -- SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY WHERE SERVICE_TYPE='AI_SERVICES'; -- 以下查询将提供详细视图的信息 -- SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY; * 详细视图指的是每个大型语言模型如何消耗计算资源和成本。
消费量指标数据
如果我们想要在这两个表之间建立一种关系,那么在大多数情况下,我们可以看到以下两个查询的输出结果是匹配的:
这些问题
概括来说,我们可以看到成本与处理的 token 数量越多成比例。附上来自 Snowflake 的关于信用与 token 映射的代码片段。
图片来自:Snowflake.
总之,Snowflake Cortex LLM功能简化了数据处理流程,使得复杂的查询和洞察即使是非技术人员也能轻松访问,从而提升数据操作效率。这些功能真的很强大,并且具有很大的潜力来解锁多种应用场景(其中一些我们在本博客中也讨论过)。
请继续阅读我的博客,这只会鼓励我发布更多这样的内容。您可以在LinkedIn上关注我,也可以在Medium上关注我。祝您学习愉快!
荣获 “Snowflake 2023年和2024年数据超级英雄” 荣誉。详情请点击这里详情
声明:以下表达的观点仅代表我个人,并不一定反映我当前、过去或未来雇主的观点。