在 Amazon SageMaker 上部署 Llama 3

在 Amazon SageMaker 上部署 Llama 3

在 Amazon SageMaker 上部署 Llama 3 在 Amazon SageMaker 上部署 Llama 3 Modified April 19, 2024 部署 Llama 3 到 Amazon SageMaker 要将 Llama 3 70B 部署到 Amazon SageMaker,我们创建一个 HuggingFaceModel 模型类,并定义我们的端点配置,包括 hf model id , instance type 等。我们将使用一个 p4d.24xlarge 实例类型,该类型具有 8 个 NVIDIA A100 GPU 和 320GB 的 GPU 内存。Llama 3 70B 指令是一个经过优化的对话 AI 模型,这使我们能够启用 TGI 的消息 API 与 llama 交互,使用常见的 OpenAI 格式 messages 。 Code block JSON { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "What is deep learning?" } ] } 📌 注意:Llama 3 是一个有门槛的模型,请在提交此表单前访问模型卡并接受许可条款和可接受的使用政策。 Code block Python import json from sagemaker.huggingface import HuggingFaceModel sagemaker config instance type = "ml.p4d.24xlarge" health check timeout = 900 Define Model and Endpoint configuration parameter config = { 'HF MODEL ID': "meta llama/Meta Llama 3 70B Instruct", model id from hf.co/models 'SM NUM GPUS': "8", Number of GPU used per replica 'MAX INPUT LENGTH': "2048", Max length of input text 'MAX TOTAL TOKENS': "4096", Max length of the generation (including input text) 'MAX BATCH TOTAL TOKENS': "8192", Limits the number of tokens that can be processed in parallel during the generation 'MESSAGES API ENABLED': "true", Enable the messages API 'HUGGING FACE HUB TOKEN': "<REPLACE WITH YOUR TOKEN " } check if token is set assert config['HUGGING FACE HUB TOKEN'] != "<REPLACE WITH YOUR TOKEN ", "Please set your Hugging Face Hub token" create HuggingFaceModel with the image uri llm model = HuggingFaceModel( role=role, image uri=llm image, env=config ) 创建 HuggingFaceModel 后,我们可以使用 deploy 方法将其部署到 Amazon SageMaker。我们将使用 ml.p4d.24xlarge 实例类型部署模型。TGI 将自动在所有 GPU 上分发和分片模型。 Code block Python Deploy model to an endpoint https://sagemaker.readthedocs.io/en/stable/api/inference/model.html sagemaker.model.Model.deploy llm = llm model.deploy( initial instance count=1, instance type=instance type, container startup health check timeout=health check timeout, 10 minutes to be able to load the model ) SageMaker 现在将创建我们的端点并将模型部署到其中。这可能需要 10 15 分钟。 运行推理并与模型聊天 部署我们的端点后,我们可以对其运行推理。我们将使用 predict 方法从 predictor 上运行推理。我们可以使用不同的参数进行推理以影响生成。参数可以在有效负载的 parameters 属性中定义。您可以在此处找到支持的参数。 消息 API 允许我们以对话方式与模型进行交互。我们可以定义消息的角色和内容。角色可以是 system 、 assistant 或 user 。 system 角色用于向模型提供上下文, user 角色用于提出问题或向模型提供输入。 Code block JSON { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "What is deep learning?" } ] } Code block Python Prompt to generate messages=[ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "What is deep learning?" } ] Generation arguments parameters = { "model": "meta llama/Meta Llama 3 70B Instruct", placholder, needed "top p": 0.6, "temperature": 0.9, "max tokens": 512, "stop": ["<|eot id| "], } 好的,让我们来测试一下。 Code block Python chat = llm.predict({"messages" :messages, parameters}) print(chat["choices"][0]["message"]["content"].strip()) 用 llmperf 对 Benchmark llama 3 70B 进行测试 我们成功地将 Llama 3 70B 部署到 Amazon SageMaker 并进行了测试。现在我们想要对该模型进行基准测试以查看其性能。我们将使用支持 sagemaker 的 llmperf 分支。 首先让我们安装 llmperf 软件包。 Code block Python !git clone https://github.com/philschmid/llmperf.git !pip install e llmperf/ 现在我们可以使用以下命令运行基准测试。我们将使用 25 个并发用户和最大 500 请求进行基准测试。基准测试将测量 first time to token , latency (ms/token) 和 throughput (tokens/s) ,详细信息可以在 results 文件夹中找到。 💡 🚨重要🚨:此基准测试是从欧洲(Europe)发起的,而终端运行在 us east 1。这对 first time to token 指标有重大影响,因为它包括网络通信。如果您想正确测量 first time to token ,您需要在相同的主机或您的生产区域上运行基准测试。 Code block Python tell llmperf that we are using the messages api !MESSAGES API=true python llmperf/token benchmark ray.py \ model {llm.endpoint name} \ llm api "sagemaker" \ max num completed requests 500 \ timeout 600 \ num concurrent requests 25 \ results dir "results" 让我们解析结果并将其显示得漂亮些。 Code block Python import glob import json Reads the summary.json file and prints the results with open(glob.glob(f'results/ summary.json')[0], 'r') as file: data = json.load(file) print("Concurrent requests: 25") print(f"Avg. Input token length: {data['mean input tokens']}") print(f"Avg. Output token length: {data['mean output tokens']}") print(f"Avg. First Time To Token: {data['results ttft s mean'] 1000:.2f}ms") print(f"Avg. Thorughput: {data['results mean output throughput token per s']:.2f} tokens/sec") print(f"Avg. Latency: {data['results inter token latency s mean'] 1000:.2f}ms/token") Concurrent requests: 25 Avg. Input token length: 550 Avg. Output token length: 150 Avg. First Time To Token: 1301.28ms Avg. Thorughput: 1116.25 tokens/sec Avg. Latency: 9.45ms/token 好了!我们成功地在 Amazon SageMaker 上部署、测试和基准测试了 Llama 3 70B。该基准测试并不能完全代表模型性能,但它可以给你一个初步的好指标。如果你计划在生产环境中使用该模型,我们建议运行一个更长、更接近于你的生产基准测试,修改副本数量参见(使用多副本端点在 Amazon SageMaker 上伸缩LLM)并且最重要的是使用您自己的数据测试模型。 Clean up 清理 为了清理,我们可以删除模型和端点。 Code block Python llm.delete model() llm.delete endpoint() 感谢阅读!如果您有任何问题,请随时通过 Twitter 或 LinkedIn 联系我。 原文https://www.philschmid.de/sagemaker llama3 Llama 3 70B 消息 API 模型卡 此处 使用多副本端点在 Amazon SageMaker 上伸缩LLM Twitter LinkedIn 部署 Llama 3 到 Amazon SageMaker 要将 Llama 3 70B 部署到 Amazon SageMaker,我们创建一个 HuggingFaceModel 模型类,并定义我们的端点配置,包括 hf model id , instance type 等。我们将使用一个 p4d.24xlarge 实例类型,该类型具有 8 个 NVIDIA A100 GPU 和 320GB 的 GPU 内存。Llama 3 70B 指令是一个经过优化的对话 AI 模型,这使我们能够启用 TGI 的消息 API 与 llama 交互,使用常见的 OpenAI 格式 messages 。 Llama 3 70B 消息 API 📌 注意:Llama 3 是一个有门槛的模型,请在提交此表单前访问模型卡并接受许可条款和可接受的使用政策。 模型卡 注意:Llama 3 是一个有门槛的模型,请在提交此表单前访问模型卡并接受许可条款和可接受的使用政策。 模型卡 创建 HuggingFaceModel 后,我们可以使用 deploy 方法将其部署到 Amazon SageMaker。我们将使用 ml.p4d.24xlarge 实例类型部署模型。TGI 将自动在所有 GPU 上分发和分片模型。 SageMaker 现在将创建我们的端点并将模型部署到其中。这可能需要 10 15 分钟。 运行推理并与模型聊天 部署我们的端点后,我们可以对其运行推理。我们将使用 predict 方法从 predictor 上运行推理。我们可以使用不同的参数进行推理以影响生成。参数可以在有效负载的 parameters 属性中定义。您可以在此处找到支持的参数。 此处 消息 API 允许我们以对话方式与模型进行交互。我们可以定义消息的角色和内容。角色可以是 system 、 assistant 或 user 。 system 角色用于向模型提供上下文, user 角色用于提出问题或向模型提供输入。 好的,让我们来测试一下。 用 llmperf 对 Benchmark llama 3 70B 进行测试 我们成功地将 Llama 3 70B 部署到 Amazon SageMaker 并进行了测试。现在我们想要对该模型进行基准测试以查看其性能。我们将使用支持 sagemaker 的 llmperf 分支。 首先让我们安装 llmperf 软件包。 llmperf 首先让我们安装 llmperf 软件包。 现在我们可以使用以下命令运行基准测试。我们将使用 25 个并发用户和最大 500 请求进行基准测试。基准测试将测量 first time to token , latency (ms/token) 和 throughput (tokens/s) ,详细信息可以在 results 文件夹中找到。 💡 🚨重要🚨:此基准测试是从欧洲(Europe)发起的,而终端运行在 us east 1。这对 first time to token 指标有重大影响,因为它包括网络通信。如果您想正确测量 first time to token ,您需要在相同的主机或您的生产区域上运行基准测试。 🚨重要🚨:此基准测试是从欧洲(Europe)发起的,而终端运行在 us east 1。这对 first time to token 指标有重大影响,因为它包括网络通信。如果您想正确测量 first time to token ,您需要在相同的主机或您的生产区域上运行基准测试。 让我们解析结果并将其显示得漂亮些。 好了!我们成功地在 Amazon SageMaker 上部署、测试和基准测试了 Llama 3 70B。该基准测试并不能完全代表模型性能,但它可以给你一个初步的好指标。如果你计划在生产环境中使用该模型,我们建议运行一个更长、更接近于你的生产基准测试,修改副本数量参见(使用多副本端点在 Amazon SageMaker 上伸缩LLM)并且最重要的是使用您自己的数据测试模型。 使用多副本端点在 Amazon SageMaker 上伸缩LLM Clean up 清理 为了清理,我们可以删除模型和端点。 感谢阅读!如果您有任何问题,请随时通过 Twitter 或 LinkedIn 联系我。 Twitter LinkedIn 原文https://www.philschmid.de/sagemaker llama3 2024 年 4 月 18 日 今天早些时候,Meta 发布了 Llama 家族的下一个迭代版本 Llama 3。Llama 3 有两种尺寸:8B 适用于在消费级 GPU 上进行高效部署和开发,70B 适用于大规模 AI 原生应用。两者均有基础和指令调优变体。除了这 4 个型号外,Llama Guard 的新版本在 Llama 3 8B 上进行了微调,并作为 Llama Guard 2(安全微调)发布。 Llama 3 8B 70B 在这篇博客中,您将学习如何将 meta llama/Meta Llama 3 70B Instruct 模型部署到 Amazon SageMaker。我们将使用 Hugging Face LLM DLC,这是一个专为在安全和受控环境中轻松部署 LLMs 的推理容器。该 DLC 由文本生成推理(TGI)提供支持,是一个可扩展、优化的解决方案,用于部署和提供大型语言模型(LLMs)。该博客文章还包括不同模型尺寸的硬件要求。 meta llama/Meta Llama 3 70B Instruct 文本生成推理(TGI) 在本博客中将介绍如何: 1. 设置开发环境 2. 硬件要求 3. 将 Llama 3 70b 部署到 Amazon SageMaker 4. 运行推理并与模型聊天 5. 使用 llmperf 对 llama 3 70B 进行基准测试 6. 清理 让我们开始吧! 设置开发环境 我们将使用 sagemaker Python SDK 部署 Mixtral 到 Amazon SageMaker。我们需要确保已配置 AWS 账号并安装了 sagemaker Python SDK。 如果您要在本地环境中使用 Sagemaker。您需要访问具有 Sagemaker 所需权限的 IAM 角色。您可以在这里找到更多相关信息。 这里 与部署常规 Hugging Face 模型相比,我们首先需要检索容器 URI,并将其提供给我们的 HuggingFaceModel 模型类,其中 image uri 指向图像。要在 Amazon SageMaker 中检索新的 Hugging Face LLM DLC,我们可以使用 get huggingface llm image uri 方法,该方法由 sagemaker SDK 提供。该方法允许我们基于指定的 backend 、 session 、 region 和 version 检索所需的 Hugging Face LLM DLC 的 URI。您可以在这里找到可用版本 这里 📌 注意:在撰写此博客文章时,最新版本的 Hugging Face LLM DLC 尚未通过 get huggingface llm image uri 方法提供。我们将使用原始容器 URI。 注意:在撰写此博客文章时,最新版本的 Hugging Face LLM DLC 尚未通过 get huggingface llm image uri 方法提供。我们将使用原始容器 URI。 llm image uri: 763104351884.dkr.ecr.us east 1.amazonaws.com/huggingface pytorch tgi inference:2.1 tgi2.0 gpu py310 cu121 ubuntu22.04 763104351884.dkr.ecr.us east 1.amazonaws.com/huggingface pytorch tgi inference:2.1 tgi2.0 gpu py310 cu121 ubuntu22.04 硬件要求 Llama 3 有两种不同大小 8B 和 70B 参数。硬件要求将根据部署到 SageMaker 的模型大小而变化。以下是我们测试的每个模型大小的设置最低要求。 模型 Model 实例类型Instance Type 量化Quantization 每个副本的 GPU 数量 of GPUs per replica Llama 8B (ml.)g5.2xlarge 1 Llama 8B (ml.)g5.12xlarge gptq | awq 8 Llama 70B (ml.)g5.48xlarge 8 Llama 70B (ml.)p4d.24xlarge 8 Llama 8B Llama 8B Llama 70B Llama 70B 模型 Model 模型 Model 实例类型Instance Type 实例类型Instance Type 量化Quantization 量化Quantization 每个副本的 GPU 数量 of GPUs per replica 每个副本的 GPU 数量 of GPUs per replica Llama 8B Llama 8B Llama 8B Llama 8B (ml.)g5.2xlarge (ml.)g5.2xlarge 1 1 Llama 8B Llama 8B Llama 8B Llama 8B (ml.)g5.12xlarge (ml.)g5.12xlarge gptq | awq gptq | awq 8 8 Llama 70B Llama 70B Llama 70B Llama 70B (ml.)g5.48xlarge (ml.)g5.48xlarge 8 8 Llama 70B Llama 70B Llama 70B Llama 70B (ml.)p4d.24xlarge (ml.)p4d.24xlarge 8 8 Note: We haven't tested GPTQ or AWQ models yet. 注意:我们尚未测试GPTQ或AWQ模型。

在 小宇宙note 阅读完整内容