如何为您的开发团队部署开源代码大模型

为您的团队正确部署开源代码大模型可能很困难。您需要
- 找到一种足够私密和安全的部署方法
- 在需要时始终获得您需要的GPU
- 确保您选择的大模型在这些GPU上可靠运行
- 在保持低成本和短时间表的同时完成这些
我们根据从 Continue 社区 和更大的 Dev+AI 社区那里学到的关于如何克服这些挑战的知识,创建了 这个代码库。欢迎通过提交 issue 或 pull request 来提出改进建议,并帮助我们保持其更新!
要为您的开发团队部署开源代码大模型,您需要回答以下五个问题
1. 是否有足够有价值的大模型可用?
在您投入时间了解如何为团队部署开源大模型之前,首先值得确保存在一个您想部署的大模型,并弄清楚它是哪个。
截至2023年10月,最受欢迎的开源代码大模型包括 1) Code Llama, 2) WizardCoder, 3) Phind-CodeLlama, 4) Mistral, 5) StarCoder, 和 6) Llama 2。我们建议您的第一步是使用 Continue 和 Together AI 试用这些模型。首次使用 Together API 时,您将获得25美元的免费额度,这应该足够尝试这些模型的不同大小了
- Code Llama - Instruct (7B, 13B, 34B)
- WizardCoder (7B, 13B, 34B)
- Phind-CodeLlama (34B)
- Mistral - Instruct (7B)
- StarCoder (15B)
- Llama 2 - Chat (7B, 13B, 70B)
在使用每个模型时,您需要关注建议的质量和模型的速度。您很可能希望为您的团队选择13B或34B参数的模型。但是,如果您发现7B模型可以接受,并且团队中的每个人都有足够内存的笔记本电脑,那么您可以考虑让每个人使用 Ollama, LM Studio, 或 LocalAI 在本地运行模型。
一旦您决定了要部署哪个大模型,下一步就是确定是否有适合您的部署方法。
2. 是否有合适的部署方法?
根据您是在小型初创公司还是大型组织工作,您可能会使用、部分使用或完全不使用以下建议的部署方法。
SaaS 提供商
Together
Together 是一个用于运行大模型的云平台。所有最受欢迎的开源代码模型都可用。
Hugging Face 推理端点
Hugging Face 推理端点 是另一种可以运行大多数流行开源代码大模型的服务。也可以通过 Private Link 使用您自己的 AWS 账户进行部署。
其他
还有许多其他 SaaS 提供商,包括 Replicate, Haven, 和 Anyscale Endpoints。如果您使用过这些或其他服务,请提交 issue / PR,告知我们您的经验!
云提供商
自行托管大模型需要您建立一个能够在扩展到许多并发用户时提供足够响应时间的设置。因此,您很可能希望使用为此优化的技术。
TGI
Text Generation Inference (TGI) 是一个用于部署和服务大模型的开源工具包。它专为快速推理和高吞吐量设计,使您能够提供高并发、低延迟的体验。截至2023年10月,TGI 已针对 NVIDIA A100、A10G 和 T4 GPU 上的 Code Llama、Mistral、StarCoder 和 Llama 2 进行了优化。也可以使用其他模型和不同硬件,但这可能设置更困难,并且模型的性能可能不如预期。最简单的入门方法是使用官方 Docker 容器。
vLLM
vLLM 是一个快速且易于使用的大模型推理和服务库。它具有非常高的服务吞吐量,能够连续批处理传入请求,并高效管理内存。截至2023年10月,它支持 Code Llama、Mistral、StarCoder 和 Llama 2,尽管也可以使用其他 Hugging Face 模型。值得注意的是,您可以将 vLLM 与 SkyPilot 结合使用。要了解更多信息,请查看其文档。
SkyPilot
SkyPilot 是一个用于在任何云上运行大模型的框架,可实现最大成本节省、最高 GPU 可用性和托管执行。它通过在任何云上启动作业和集群,自动排队和运行它们,并通过在您能够使用的所有区域/区域/云中预置(带自动故障转移)来最大化 GPU 可用性,从而抽象化云基础设施。您可以将其与 AWS、Azure、GCP 以及许多其他云一起使用。他们通过提供一个简单的 SkyPilot yaml 任务文件来启动 vLLM,从而使在您自己的云中使用 SkyPilot 和 vLLM 服务大模型变得容易。您还可以在他们的文档中阅读更多信息。
AWS
AWS 虚拟机实例
使用 SkyPilot 或自行操作,您可以部署带有 GPU 的虚拟机。您可以在此处设置 TGI 或 vLLM 来部署和服务大模型。您可以在此处了解更多信息。
Amazon Sagemaker
在 Amazon Sagemaker 上,您可以使用 Hugging Face 深度学习容器 (DLCs) 来部署大模型,这些容器也由 TGI 提供支持。在此部署使您能够利用 SageMaker 的托管服务能力,例如自动伸缩、健康检查和模型监控。截至2023年10月,它支持 Code Llama、Mistral、StarCoder 和 Llama 2。 此处有一个笔记本,演示了如何使用 Sagemaker 进行大模型托管。
AWS Bedrock
Amazon Bedrock 是一项完全托管的服务,提供高性能大模型部署访问,而无需维护任何基础设施。截至2023年10月,在最受欢迎的开源代码大模型中,只有 Llama 2 可用。
Azure
Azure 虚拟机实例
Azure 提供 GPU 优化的虚拟机。您可以使用 SkyPilot 或自行部署这些虚拟机,然后设置 TGI 或 vLLM 来服务大模型。此处了解更多信息。
Azure 机器学习
Azure 机器学习模型目录 提供大模型访问。截至2023年10月,在最受欢迎的开源代码大模型中,只有 Llama 2 可用。
GCP
GCP 虚拟机实例
在 Compute Engine 上,您可以创建带有 GPU 的 Container-Optimized OS 虚拟机实例。这可以使用 SkyPilot 或自行完成。您需要设置 TGI 或 vLLM 来服务大模型。
Vertex AI 上的 GCP 模型园
模型园 提供精选的大模型集合。截至2023年10月,在最受欢迎的开源代码大模型中,只有 Code Llama 和 Llama 2 可用。
其他
还有许多其他部署方法,包括 Cog, Triton Inference Server, 和 RayLLM。如果您使用过这些或其他方法,请提交 issue / PR,告知我们您的经验!
资源
3. 您现在能获得足够的内存吗?
您的内存需求取决于您选择的模型和所需的延迟。您需要具有足够内存的 GPU,以便 1) 服务模型,以及 2) 在处理团队的并行请求时响应时间不会下降太多。根据您的部署方法和您想使用的大模型,您可能还需要特定的 GPU。在投入大量时间优化部署之前,通常最好与团队一起进行试点,以确定您实际需要多少内存。
SaaS 提供商
使用 SaaS 提供商的主要好处之一是他们通常已经为您模型的服务 확보了必要的 GPU。对于其中一些提供商,您只需选择模型,甚至根本不需要考虑 GPU。
云提供商
对于最直接的部署,您很可能需要获得 NVIDIA A100、NVIDIA A10G 或 NVIDIA Tesla T4 GPU。当然也可以使用其他 GPU,只是安装和设置可能不那么容易。
大多数云提供商都会实行配额政策,因此您在预置资源时可能会遇到错误,尤其是在需求量大的 GPU 上。下面提供了如何检查和增加每个云提供商的配额限制的说明。提交请求后,支持团队通常需要几天时间进行审查。回复他们的询问邮件,说明请求的资源将如何使用,可以增加您的审批机会。
AWS
有关请求增加 AWS 配额的说明可以在此处找到。
Azure
有关请求增加 Azure 配额的说明可以在此处找到。
GCP
有关请求增加 GCP 配额的说明可以在此处找到。
其他
还有许多专注于 GPU 的云提供商,包括 Lambda Labs, Runpod, ShadeForm, Vast.ai, FluidStack, CoreWeave, Paperspace, 和 Jarvis Labs。如果您使用过这些或其他提供商,请提交 issue / PR,告知我们您的经验!
4. 您能为您的团队 확보足够的预算吗?
成本变化很大,取决于模型、所需的延迟、部署方法、选择的内存等。为确保为您的团队部署开源代码大模型的成本接近或低于您的预算,您很可能需要在投入大量时间优化部署之前,尝试获得一个基准成本估算。
SaaS 提供商
按生成的 token 计费
一些 SaaS 提供商,如 Together,根据生成的 token 数量收费。好处是您只需按使用量付费。但是,这种计费模式难以估算您的花费。最好与您的团队进行几周的试点,以估算您的年度成本。
按时间单位计费
其他 SaaS 提供商,如 Hugging Face Inference Endpoints,按时间单位(例如按小时)收费。这种计费更透明,使您能够更好地估算每个不同实例的花费。但是,您必须选择并支付实例费用,即使在不使用时也是如此。您可以手动启动/停止实例,有时甚至可以配置启动/停止的时间设置。
云提供商
我们粗略估算,目前在云提供商上为您的团队部署开源代码大模型,每月成本大约在500美元到10,000美元之间。
以下是一些可能降低成本的方法
- SkyPilot 通过三种方式帮助您削减云成本
- Managed Spot(托管 Spot 实例): “使用带有自动抢占恢复功能的 Spot VM 可节省 3-6 倍成本”
- Optimizer(优化器): “通过自动选择最便宜的 VM/区域/区域/云节省 2 倍成本”
- Autostop(自动停止): “闲置集群的无人值守清理”
- 您还可以通过使用 Activation-aware Weight Quantized (AWQ) 模型来降低成本,这使您能够使用更小的 GPU。话虽如此,截至2023年10月,总体吞吐量仍然会低于使用未量化模型运行 vLLM 或 TGI。 The Bloke 为最流行的开源代码大模型等提供了 AWQ 模型。如果您确实使用较小的 GPU,仍然需要确保分配了足够的额外 VRAM 来处理并行传入的多个请求。否则,响应速度可能会下降。
资源
5. 您能否长期维护此部署?
SaaS 提供商
使用 SaaS 提供商的另一个主要好处是,他们负责维护,而不是您。
云提供商
为确保您能长期维护此部署,您需要弄清楚以下问题的答案
- 部署中断时会发生什么?
- 如果团队规模扩大,您如何扩展分配的资源?
- 您将如何跟上最新的开源大模型?
- 谁负责更新驱动程序和其他依赖项?
- 如果需要,您是否有时间优化成本和可用性?
- 如果发布了新的、改进的模型,升级需要多少精力?
贡献
如果您发现可以改进我们此处的建议,我们欢迎您提交 PR 或 issue!我们希望维护一个由社区驱动、保持更新的关于如何为开发团队部署开源代码大模型的指南。
如果您喜欢这篇博文,并且将来想阅读更多关于 DevAI(借助大模型构建软件的社区)的内容,请在此处订阅我们的月度通讯。