微信扫码
添加专属顾问
【引子】“千里之行,始于足下”,边走边记,这是大模型系列文字的第38篇文字了。
部署是大模型应用从开发环境迁移到生产环境的最后一步。这一步至关重要,因为任何应用都要最终为用户提供服务,除非你坐而论道,弄的是实验室里的玩具。
大模型应用的部署关注点如下:
可伸缩性: 可伸缩性指的是系统处理不断增加的工作量的能力,或者为了适应这种增长而扩大其潜力的能力。在生产环境中,大模型应用必须能够处理来自用户的潜在的大量请求。例如,在一个聊天机器人服务中,它可能需要每天处理数千或数百万次查询。
可靠性: 可靠性确保系统在规定的时间内始终如一地发挥其预期功能而不发生故障。无论负载如何,无论底层基础设施发生什么变化,大模型应用都应该提供一致的性能。这涉及到监控以及优化响应时间和吞吐量。
可维护性: 可维护性是指为了修正缺陷、提高性能或适应变化的环境而维护系统的容易程度。模型需要定期更新,包括新数据、改进的算法或错误修复。一个维护良好的部署流水线可以确保这些更新可以在没有重大停机或人工干预的情况下推出。
用户访问: 用户访问是指最终用户与大模型应用交互并利用其功能的能力。部署使得最终用户可以访问大模型应用,无论他们是内部利益相关者还是外部客户。
一般地,部署一个大模型应用会遵循如下步骤。
使用大型数据集训练或微调 LLM,并使用单独的验证集验证其性能。我们要确保模型已经学习了数据中的底层模式,并很好地推广到未见数据。常见的工具包括 TensorFlow, PyTorch以及Hugging Face Transformers.
对模型训练或微调完成后,需要对模型进行序列化,即将经过训练的模型转换为可移植格式。这是为了可以在不同的环境中轻松地保存、传输和加载模型。例如 在 PyTorch 中,可以使用 torch.save(model.state_dict(), 'model.pth')。
在 GitLab 上创建和设置一个存储库,提供一个集中的版本控制系统来管理和跟踪对代码和模型文件的更改。同时,使用 Git 跟踪更改并与其他人协作, 有助于维护修改的历史记录,并在必要时进行回滚。
关于Git 的使用在网络上已经有很多资源,也可以参考《老码眼中的Git》。
Docker 是一个容器化部署和管理应用程序的平台。容器是轻量级、可移植且自给自足的环境,它们将应用程序及其依赖项和配置文件打包在一起。这样可以确保应用程序在从开发人员的本地机器到生产服务器的不同环境中一致地运行。
一般地,使用 Docker 将大模型应用容器化的步骤:
安装 Docker: 确保系统上安装了 Docker。您可以从 Docker 的官方网站下载并安装 Docker。
创建 Dockerfile: Dockerfile 是一个文本文档,其中包含组装 Docker 映像的指令。
构建 Docker 映像: 使用 Docker Build 命令从 Dockerfile 创建 Docker 映像。此映像包含应用程序及其所有依赖项。例如,docker build -t my-llm-app .
运行 Docker容器: 使用 Docker Run 命令从 Docker 映像创建并启动一个容器。例如,docker run -p 6000:80 my-llm-app
验证容器: 确保容器正在运行,并且应用程序是可访问的。打开网页浏览器,浏览 http://localhost:6000以验证应用程序是否正确运行。
将 Docker 映像推送到注册仓库: 为了让其他人可以使用生成的 Docker 映像,您可以将其推送到自有的 Docker 仓库。例如:
docker tag your-llm-app your-dockerhub-username/your-llm-app
docker push your-dockerhub-username/your-llm-app自动化构建、测试和部署过程对于维护高质量的软件至关重要。Jenkins 是一个广泛使用的开源自动化服务器,它使开发人员能够可靠、高效地构建、测试和部署他们的应用程序,通过设置 Jenkins 服务器,可以实现持续集成(CI)和持续交付(CD)实践。
Jenkins 流水线是一套插件,下面是如何创建一个简单流水线的步骤:
创建一个 Jenkinsfile: 这个文件使用一个基于 Groovy 的领域特定语言(DSL)来定义 CI/CD 流水线。例如:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'make' // replace with your build command
}
}
stage('Test') {
steps {
echo 'Testing...'
sh 'make test' // replace with your test command
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
sh 'make deploy' // replace with your deploy command
}
}
}
}2.将 Jenkinsfile 添加到项目存储库的根目录中
3.在Jenkins创建一个新的流水线任务,并运行。Jenkins 会执行Jenkinsfile中定义的步骤。
当然,也可以使用其他工具构建CI/CD流水线,例如,GitLab CI支持基于 YAML 的流水线定义并提供健壮的 CI/CD 功能;CircleCI一个基于云的 CI/CD 工具,以其速度和易于安装而闻名,还支持基于 YAML 的配置,并与 GitHub 和 Bitbucket 很好地集成;Travis CI是另一个与 GitHub 集成的基于云的 CI/CD 工具,使用一个。Yml 文件来定义构建流水线,并且在开源社区中很流行。
K8S 是一个开源平台,旨在自动部署、扩展和操作容器化应用程序。它将组成应用程序的容器分组为逻辑单元,以便于管理和发现。K8S集群可以管理应用容器的部署、扩展和操作,确保它们在各种环境中高效可靠地运行。K8S还抽象了底层的基础结构,提供了一个统一的 API 来管理应用程序的生命周期。
一般地,我们需要创建一个 K8S集群来编排容器化应用程序,并管理应用程序容器的部署、缩放和操作。例如,我们是Google Kubernetes Engine 来创建这个集群,首先下载安装Google Cloud SDK,并完成授权,并完成集群创建:
gcloud auth login
gcloud config set project [MYPROJECT_ID]
gcloud container clusters create my-llm-cluster --zone target_zone --num-nodes 3接下来,获取K8S的证书,将 kubectl 配置为使用新集群的凭据。
gcloud container clusters get-credentials llm-cluster --zone target_zone
然后,定义在 K8S上部署应用程序的配置。部署配置指定如何部署应用程序,包括副本数量、要使用的容器映像和要公开的端口。服务配置定义应用程序如何与其他组件和外部用户交互。
K8S部署配置示例:myllmapp_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: llm-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-llm-app
template:
metadata:
labels:
app: my-llm-app
spec:
containers:
- name: my-llm-app
image: my-dockerhub-username/my-llm-app:latest
ports:
- containerPort: 80K8S的服务配置示例:my_service.yaml :
apiVersion: v1
kind: Service
metadata:
name: my-llm-service
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: my-llm-app
然后,使用 K8S配置文件部署应用程序。使用 kubectl,可以应用配置文件来创建并管理 K8S资源。这将使部署过程自动化,从而使应用程序易于管理和扩展。
应用部署配置:
kubectl apply -f my_llm_app_deployment.yaml
应用服务配置:
kubectl apply -f service.yaml
最后,确认部署是否成功。
kubectl get deployments
kubectl get services这些命令列出了部署和服务,以验证应用程序是否正确运行并能够公开使用。
设置监控工具,如 Prometheus、 Grafana 和 ELK,对于跟踪应用程序的性能和健康状况至关重要。通过提供实时指标和警报,我们快速识别和解决问题,从而确保大模型应用的平稳运行。这些工具收集并可视化数据,能够理解应用程序的行为,检测异常,并维护高可用性和性能。
定期更新和维护大模型应用确保了它们与最新的改进和修复保持同步。这包括定期更新依赖关系、应用安全补丁以及用新数据优化的模型。例行维护保持了应用程序的最佳性能,降低了漏洞的风险,并适应不断变化的需求,确保了可靠和高效的用户体验。
在生产环境中部署大模型应用涉及到几个关键步骤,从模型准备和版本控制到使用 K8S 进行容器化部署。通过利用像 Gitlab、 Jenkins、 Docker 和 K8S 这样的工具,我们可以创建一个健壮的、可伸缩的和可维护的部署流水线,确保了大模型应用在生产环境中可靠地为用户提供服务,从而提供有价值的见解和服务。
部署过程中的每个工具和步骤都有替代方案,工具的选择取决于具体需求和优先事项。理解这些工具以及每个步骤背后的原因能帮助我们做出明智的决策,并成功地在生产环境中部署大模型。
【关联阅读】
大模型应用的10种架构模式
7B?13B?175B?解读大模型的参数
“提示工程”的技术分类
大模型系列:提示词管理
提示工程中的10个设计模式
解读:基于图的大模型提示技术
Chunking:基于大模型RAG系统中的文档分块
大模型应用框架:LangChain与LlamaIndex的对比选择
解读大模型应用的可观测性
大模型系列之解读MoE
在大模型RAG系统中应用知识图谱
面向知识图谱的大模型应用
让知识图谱成为大模型的伴侣
Qcon2023: 大模型时代的技术人成长(简)
论文学习笔记:增强学习应用于OS调度
《深入浅出Embedding》随笔
LLM的工程实践思考
大模型应用设计的10个思考
基于大模型(LLM)的Agent 应用开发
解读大模型的微调
解读向量数据库
解读ChatGPT中的RLHF
解读大模型(LLM)的token
解读提示词工程(Prompt Engineering)
解读Toolformer
解读TaskMatrix.AI
解读LangChain
解读LoRA
解读RAG
大模型应用框架之Semantic Kernel
浅析多模态机器学习
大模型应用于数字人
深度学习架构的对比分析
老码农眼中的大模型(LLM)
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-07
OpenAI 全面拥抱 Agentic-First,实测有点扎心
2026-07-07
团队落地 Agent 工程化 Loop 的一些必看小技巧!
2026-07-07
刚刚,DeepSeek 文档更新,Agent 开发者要注意这个字段
2026-07-06
OpenAI Codex 产品经理:AI 不是让你做更快,是让你做以前不敢做的事
2026-07-06
治理与进化,如何成为企业级 Agent 的两条生死线?
2026-07-06
腾讯混元 Hy3,正式发布
2026-07-06
我拿到了微信Agent的灰测!!感觉又要被取代了
2026-07-06
循环工程:Karpathy方法——以及使其效率提升 5 倍的工作流程
2026-04-15
2026-04-24
2026-04-17
2026-04-14
2026-04-24
2026-05-19
2026-04-22
2026-04-24
2026-04-24
2026-04-08
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。