Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务

Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务

今天,我们很高兴地宣布,由 Meta 开发的 Code Llama 基础模型可供客户通过 亚马逊SageMaker JumpStart 一键部署以运行推理。 Code Llama 是一种最先进的大型语言模型 (LLM),能够根据代码和自然语言提示生成代码和有关代码的自然语言。您可以使用 SageMaker JumpStart 尝试此模型,SageMaker JumpStart 是一个机器学习 (ML) 中心,提供对算法、模型和 ML 解决方案的访问,以便您可以快速开始使用 ML。在这篇文章中,我们将介绍如何通过 SageMaker JumpStart 发现和部署 Code Llama 模型。

代码骆驼

Code Llama 是由 它构建在 Llama 2 之上。这种最先进的模型旨在通过帮助开发人员创建高质量、记录良好的代码来提高开发人员的编程任务的工作效率。这些模型在 Python、C++、Java、PHP、C#、TypeScript 和 Bash 中表现出色,并且有可能节省开发人员的时间并使软件工作流程更加高效。

它具有三种变体,旨在涵盖各种应用:基础模型 (Code Llama)、Python 专用模型 (Code Llama Python) 和用于理解自然语言指令的指令跟踪模型 (Code Llama Instruct)。所有 Code Llama 变体都有四种尺寸:7B、13B、34B 和 70B 参数。 7B 和 13B 基本和指令变体支持基于周围内容的填充,使其成为代码助理应用程序的理想选择。这些模型以 Llama 2 为基础进行设计,然后在 500 亿个 token 的代码数据上进行训练,Python 专用版本则在增量 100 亿个 token 上进行训练。 Code Llama 模型提供了具有多达 100,000 个上下文标记的稳定生成。所有模型均在 16,000 个标记的序列上进行训练,并在最多 100,000 个标记的输入上显示出改进。

该模型是在相同的条件下提供的 社区许可证为 Llama 2。

SageMaker 中的基础模型

SageMaker JumpStart 提供对流行模型中心的一系列模型的访问,包括 Hugging Face、PyTorch Hub 和 TensorFlow Hub,您可以在 SageMaker 的 ML 开发工作流程中使用这些模型。 机器学习的最新进展催生了一类新的模型,称为 基础模型,它们通常经过数十亿个参数的训练,并且适用于广泛的用例,例如文本摘要、数字艺术生成和语言翻译。由于这些模型的训练成本很高,因此客户希望使用现有的预先训练的基础模型并根据需要对其进行微调,而不是自己训练这些模型。 SageMaker 提供了精选的模型列表,您可以在 SageMaker 控制台上进行选择。

您可以在 SageMaker JumpStart 中找到来自不同模型提供商的基础模型,使您能够快速开始使用基础模型。您可以根据不同的任务或模型提供者找到基础模型,并轻松查看模型特征和使用条款。您还可以使用测试 UI 小部件来尝试这些模型。当您想要大规模使用基础模型时,您可以使用模型提供商提供的预构建笔记本,而无需离开 SageMaker。由于模型在 AWS 上托管和部署,因此您可以放心,无论是用于评估还是大规模使用模型,您的数据都不会与第三方共享。

在 SageMaker JumpStart 中探索 Code Llama 模型

要部署 Code Llama 70B 模型,请完成以下步骤: 亚马逊SageMaker Studio:

  1. 在 SageMaker Studio 主页上,选择 快速启动 在导航窗格中。

    Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

  2. 搜索 Code Llama 型号并从显示的型号列表中选择 Code Llama 70B 型号。

    Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

    您可以在 Code Llama 70B 型号卡上找到有关该型号的更多信息。

    Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

    以下屏幕截图显示了端点设置。您可以更改选项或使用默认选项。

  3. 接受最终用户许可协议 (EULA) 并选择 部署.
    Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

    这将启动端点部署过程,如以下屏幕截图所示。

    Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

使用 SageMaker Python SDK 部署模型

或者,您可以通过选择示例笔记本进行部署 打开笔记本 在 Classic Studio 的模型详细信息页面中。该示例笔记本提供了有关如何部署模型进行推理和清理资源的端到端指导。

要使用笔记本进行部署,我们首先选择适当的模型,由 model_id。 您可以使用以下代码在 SageMaker 上部署任何选定的模型:

from sagemaker.jumpstart.model import JumpStartModel model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-70b")
predictor = model.deploy(accept_eula=False) # Change EULA acceptance to True

这会使用默认配置(包括默认实例类型和默认 VPC 配置)在 SageMaker 上部署模型。 您可以通过在中指定非默认值来更改这些配置 快速启动模型。请注意,默认情况下, accept_eula 被设置为 False. 你需要设置 accept_eula=True 成功部署端点。通过这样做,您接受前面提到的用户许可协议和可接受的使用政策。你也可以 下载 许可协议。

调用 SageMaker 端点

部署端点后,您可以使用Boto3或SageMaker Python SDK进行推理。在以下代码中,我们使用 SageMaker Python SDK 调用模型进行推理并打印响应:

def print_response(payload, response): print(payload["inputs"]) print(f"> {response[0]['generated_text']}") print("n==================================n")

该功能 print_response 接受由有效负载和模型响应组成的有效负载并打印输出。 Code Llama 在执行推理时支持许多参数:

  • 最长长度 – 模型生成文本直到输出长度(包括输入上下文长度)达到 max_length. 如果指定,它必须是正整数。
  • 最大新令牌数 – 模型生成文本直到输出长度(不包括输入上下文长度)达到 max_new_tokens. 如果指定,它必须是正整数。
  • 梁数 – 这指定了贪婪搜索中使用的波束数量。如果指定,它必须是大于或等于的整数 num_return_sequences.
  • no_repeat_ngram_size – 该模型确保一系列单词 no_repeat_ngram_size 在输出序列中不重复。 如果指定,它必须是大于 1 的正整数。
  • 温度 – 这控制输出的随机性。更高 temperature 产生具有低概率单词的输出序列,并且较低 temperature 产生具有高概率单词的输出序列。如果 temperature 为0时,会导致贪婪解码。如果指定,它必须是正浮点数。
  • 提前停止 - 如果 True,当所有束假设到达句子标记的末尾时,文本生成完成。如果指定,则它必须是布尔值。
  • 做样本 - 如果 True,模型根据可能性对下一个单词进行采样。如果指定,则它必须是布尔值。
  • 前k个 – 在文本生成的每个步骤中,模型仅从 top_k 最有可能的话。 如果指定,它必须是正整数。
  • 顶部_p – 在文本生成的每一步中,模型都会以累积概率从尽可能小的单词集中进行采样 top_p。 如果指定,它必须是 0 到 1 之间的浮点数。
  • 返回全文 - 如果 True,输入文本将成为输出生成文本的一部分。如果指定,则它必须是布尔值。它的默认值是 False.
  • 停止 – 如果指定,它必须是字符串列表。如果生成任何一个指定字符串,文本生成就会停止。

您可以在调用端点时指定这些参数的任何子集。接下来,我们将展示如何使用这些参数调用端点的示例。

代码完成

以下示例演示如何执行代码完成,其中预期端点响应是提示的自然延续。

我们首先运行以下代码:

prompt = """
import socket def ping_exponential_backoff(host: str): """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

我们得到以下输出:

""" Pings the given host with exponential backoff. """ timeout = 1 while True: try: socket.create_connection((host, 80), timeout=timeout) return except socket.error: timeout *= 2

对于下一个示例,我们运行以下代码:

prompt = """
import argparse
def main(string: str): print(string) print(string[::-1])
if __name__ == "__main__": """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
predictor.predict(payload)

我们得到以下输出:

parser = argparse.ArgumentParser(description='Reverse a string') parser.add_argument('string', type=str, help='String to reverse') args = parser.parse_args() main(args.string)

代码生成

以下示例展示了使用 Code Llama 生成 Python 代码。

我们首先运行以下代码:

prompt = """
Write a python function to traverse a list in reverse. """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

我们得到以下输出:

def reverse(list1): for i in range(len(list1)-1,-1,-1): print(list1[i]) list1 = [1,2,3,4,5]
reverse(list1)

对于下一个示例,我们运行以下代码:

prompt = """
Write a python function to to carry out bubble sort. """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.1, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

我们得到以下输出:

def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr arr = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(arr))

这些是使用 Code Llama 70B 执行与代码相关的任务的一些示例。您可以使用该模型生成更复杂的代码。我们鼓励您使用自己的代码相关用例和示例进行尝试!

清理

测试端点后,请确保删除 SageMaker 推理端点和模型,以避免产生费用。使用以下代码:

predictor.delete_endpoint()

结论

在这篇文章中,我们介绍了 SageMaker JumpStart 上的 Code Llama 70B。 Code Llama 70B 是一种最先进的模型,用于根据自然语言提示和代码生成代码。您可以在 SageMaker JumpStart 中通过几个简单的步骤部署模型,然后使用它来执行代码相关的任务,例如代码生成和代码填充。下一步,尝试将模型与您自己的代码相关用例和数据一起使用。


关于作者

Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。凯尔乌尔里希博士 是 Amazon SageMaker JumpStart 团队的应用科学家。 他的研究兴趣包括可扩展的机器学习算法、计算机视觉、时间序列、贝叶斯非参数和高斯过程。 他拥有杜克大学博士学位,并在 NeurIPS、Cell 和 Neuron 上发表过论文。

Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。法鲁克·萨比尔博士 是 AWS 的高级人工智能和机器学习专家解决方案架构师。 他拥有德克萨斯大学奥斯汀分校的电气工程博士和硕士学位,以及佐治亚理工学院的计算机科学硕士学位。 他拥有超过 15 年的工作经验,也喜欢教授和指导大学生。 在 AWS,他帮助客户制定和解决他们在数据科学、机器学习、计算机视觉、人工智能、数值优化和相关领域的业务问题。 他和他的家人居住在得克萨斯州达拉斯,喜欢旅行和长途旅行。

Code Llama 70B 现已在 Amazon SageMaker JumpStart 中提供 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。六月赢了 是 SageMaker JumpStart 的产品经理。 他专注于使基础模型易于发现和使用,以帮助客户构建生成式人工智能应用程序。 他在亚马逊的经验还包括移动购物应用程序和最后一英里送货。

时间戳记:

更多来自 AWS机器学习