微信扫码
添加专属顾问
本文主要讨论GPU的生产环境如何降低成本,和各类saas服务、免费账号等不是一个维度。
生产环境中,通常会遇到几个问题:
1、业务不稳定。例如早上高峰期队列非常高,而凌晨又几乎没有流量
2、大模型的基建通常在github、huggingface等平台上,国内容易timeout
3、过去业务常用的docker镜像承重不了模型动辄几十g的容量,例如flux.1的环境中,torch+flux.1的模型最低也要32g的大小,按照传统运维流程,再精简也无法做到常见业务镜像几十m的体积
除了生产环境,个人如果想要体验下最新的模型,但没有4090。或者4090目前正在炼丹,临时需要再来一套环境把玩,都可以采用下面的方案进行。
根据以上场景,大模型的生产场景需要有不同于过去的运维方案,docker装天下的时代在大模型这里不适用了。
下面的示例用腾讯云进行示例(@腾讯云 请打广告费),其中用到的功能在所有云服务厂商都有,可以任意选择成本最低的一家。但是要说明的是尽量选择通用型的云服务厂商,虽然有的垂直领域GPU服务商的成本可能更低,但网络、ip、存储的稳定性也是在生产环境中比较重要的部分。
下面均采用comfyui作为推理示例。
场景一:个人及公司内部ai应用
内部使用的场景中,是典型的分时场景,下班了就没人用,并且还有几个优先级较高的特点:
成本尽可能低
允许一定程度的推理延迟,例如标准推理3秒,这个场景下10秒也可以
方案:
使用竞价实例降低成本。竞价实例有时候会遇到没机器的情况,大概1月1次
监控任务使用来定时删除机器
环境和数据都保留在数据盘中,机器的删除对环境无影响
按需使用,如果没人使用只有硬盘费用
成本试算:
按flux.1-dev bf16所需的32g显存V100机型计算,3.754每小时(价格是腾讯云法兰克福)。工作日21天,每天9-12点,13-18点共8个小时,成本共计
如果在公司或家里放一台4090的电脑(按500w计算),仅电费(1元1度计算)
电脑也可以定时或者按需开关机,但是稳定性和云服务毕竟没法比
构建流程:
1. 构建数据盘
将comfyui、conda环境、模型文件放入一个独立的数据盘中。还是拿flux.1为例,默认开100g应该够了(需要留一些给输出结果、custom node及依赖),在云厂商的环境下,扩容是很方便的
创建一个sh文件,为comfyui自动启动做准备
#!/bin/bashwhile truedo/data/anaconda3/envs/flux/bin/python /data/ComfyUI/main.py --listen=0.0.0.0done
2. 构建启动镜像
主要的执行数据都在数据盘中了,所以只需要一个包含gpu驱动的的启动镜像。腾讯云40g以下都是一个价,所以选40g就好了。
启动镜像的制作,不需要安装conda之类的环境,仅需要增加一个开机启动项,默认启动固定目录下的一个文件就好,这样方便数据盘将来进行变更。
数据盘默认挂载在/data目录下。
3. 构建任务输入输出端
虽然comfyui有队列功能,但还是需要做一个接口/界面进行任务接入及结果输出,因为在有任务时需要调用接口启动推理节点
4. 构建自动销毁任务
几乎可以免费使用函数计算进行定时任务,账户免费的额度完全足够此场景使用。
const secretId= "你的id";const secretKey= "你的key";const region= "地区名称";const client = (endpoint, version) => {const clientConfig = {credential: {secretId: secretId,secretKey: secretKey,},region: region,profile: {httpProfile: {endpoint: endpoint,},},};return new CommonClient(endpoint,version,clientConfig);}function params(type, cvmid) {return {"Namespace": "QCE/CVM","MetricName": type,"Period": 300,"Instances": [{"Dimensions": [{"Name": "InstanceId","Value": cvmid}]}],//可以调整监控的时间"StartTime": moment().subtract(30, 'minutes').format('YYYY-MM-DDTHH:mm:ss+00:00'),"EndTime": moment().format('YYYY-MM-DDTHH:mm:ss+00:00'),}}const isInUse = async (cvmid) => {//只监控了cpu和gpu的使用量,多数场景下够了const result = await Promise.all(['CPUUsage', 'Gpuutil'].map(async (type) => {const result = await client("monitor.tencentcloudapi.com", '2018-07-24').request("GetMonitorData", params(type, cvmid))console.log(type, JSON.stringify(result))return result.DataPoints[0].Values.filter(v => v > 5).length > 0}))return result.filter(v => v).length > 0}const moment = require('moment');//选择特定的标签,不影响其他环境使用const params = {"Filters": [{"Values": ["testing"],"Name": "tag-key"},],};const main = async () => {const vms = await client("cvm.tencentcloudapi.com", "2017-03-12").request("DescribeInstances", params)const instance = vms.InstanceSet[0];if (moment().diff(moment(instance.CreatedTime), 'minute') < 30) {console.log('cvm create less than 30 min')return}const id = instance.InstanceIdconst inUse = await isInUse(id)console.log(`isUse result ${inUse}`)if (inUse === false) {console.log(`deleted ${id}`)console.log(await client("cvm.tencentcloudapi.com", "2017-03-12").request("TerminateInstances", {InstanceIds: [id]}))}}if (require.main === module) {(async () => {await main()})()}module.exports = main
部署后设置每x分钟运行一次,如果机器在设置的30分钟内都没人使用,会自动删除机器+系统盘,但数据盘完好无损。
5. 构建启动任务
const TencentCloudCommon = require("tencentcloud-sdk-nodejs-common");const CommonClient = TencentCloudCommon.CommonClientconst secretId= "你的id";const secretKey= "你的key";const region= "地区名称";const imageId = "系统盘镜像id";const dataDiskId = "数据盘id";const password = "机器密码";const zone = ""; //实际是地区名称+可用区名称const InstanceType = "GN10X.2XLARGE40";const SecurityGroupIds = [""];//安全组idconst client = (endpoint, version) => {const clientConfig = {credential: {secretId: secretId,secretKey: secretKey,},region: region,profile: {httpProfile: {endpoint: endpoint,},},};return new CommonClient(endpoint,version,clientConfig);}function sleep(ms) {return new Promise(resolve => setTimeout(resolve, ms));}const params = {"Filters": [{"Values": ["testing"],"Name": "tag-key"},],};const main = async () => {const vms = await client("cvm.tencentcloudapi.com", "2017-03-12").request("DescribeInstances", params)if (vms.InstanceSet.length > 0)return { result: false, ip: vms.InstanceSet[0].PublicIpAddresses[0], msg: 'already exists' }const created = await client("cvm.tencentcloudapi.com", "2017-03-12").request("RunInstances", {"InstanceChargeType": "SPOTPAID","Placement": {"Zone": zone},"InstanceType": InstanceType,"ImageId": imageId,"SystemDisk": {"DiskType": "CLOUD_SSD","DiskSize": 40},"InternetAccessible": {"InternetMaxBandwidthOut": 100,"PublicIpAssigned": true},"LoginSettings": {"Password": password},"SecurityGroupIds": SecurityGroupIds,"TagSpecification": [{"ResourceType": "instance","Tags": [{"Key": "testing","Value": "1"}]}]})let vm = null;const id = created.InstanceIdSet[0]let i = 0while (i++ < 10) {//等一下,有延迟await sleep(3000)const vms = await client("cvm.tencentcloudapi.com", "2017-03-12").request("DescribeInstances", {InstanceIds: [id]})vm = vms.InstanceSet[0];if (vms.InstanceSet[0].InstanceState == 'RUNNING') {break;}}console.log(vm)const ip = vm.PublicIpAddresses[0]const disk = await client("cbs.tencentcloudapi.com", "2017-03-12").request("AttachDisks", {"InstanceId": id,"DiskIds": [dataDiskId]})console.log(disk)return { result: true, ip: ip, msg: 'success' }}if (require.main === module) {(async () => {console.log(await main())})()}module.exports = main
同样部署为一个web类型的云函数,每次调用可以获取到机器的ip,方便调用接口。
另外,可以在这个流程中增加自动更新dns的操作,这样以后统一访问一个域名就可以了
以上就完成了自动开关机的部署,在享受32g vram的同时保持了较低的成本
场景二:商用某c端应用
上面的场景中描述的方法是单机应用的方法,只会开单节点进行推理,在商业场景下调用量更加不均匀,需要能够承载更大业务量才行。
以上的基础逻辑不变,但是对于并发问题,需要有更加”云“的解决方案:
更高的并发度
更高效的资源管控。结果产物、模型数据等
更高效的部署模式,有模型变更时可以保证版本确定
方案:
采用上面的系统盘+数据盘的模式,但数据盘需要是nfs,方便并行开机
结果产物上传对象存储,保持数据盘的文件版本稳定。数据盘需要全球同步,因为一个地区的竞价实例很可能无货
做好日志收集,可以采用”传统“的filebeat之类的文件监控方案
构建流程:
1. 构建数据盘
数据盘需要用nfs,建议使用对象存储作为nfs的后端,虽然很慢。公有云基本都提供了对象存储作为nfs的方法,对象存储在内网调用没有网络费用,虽然速度比较慢,但这个场景对于速度其实没有太多要求,模型是第一次就载入了内存或显存的(特别是在商用场景下)
对象存储需要在每个目标可用区都增加桶,并配置自动同步,因此结果产物不能放在数据盘中,会增加同步负担。
2. 构建启动镜像
启动镜像和上面一样,不需要有什么变化。构建好的镜像可以进行全球分发,保证在每个可用区都有实例存在
3. 构建任务输入输出端
这一步也和上面一样
4. 构建自动销毁任务
上面的代码只检查了第一个结果,只考虑了有一个实例的情况。在商用场景下需要循环检查所有实例
5. 构建启动任务
启动任务需要判断队列长度,寻找可购买的可用区,补足实例数量。这里也可以不采用接口的部署方式,直接用定时任务检查队列长度即可
以上就完成了商业版本的部署,在低成本的前提下开启了全自动全球开机的可能性。
最后
GPU推理服务和传统的业务在运维层面差异较大,运维技能急需提升以适应新的环境,更希望能看到有k8s这样的通用解决方案出现。然而目前,在大模型应用爆发的前夕,我们也可以优化运维体验来降低成本。
ps:封面图片是flux.1-pro生成的
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-02
AReaL 2.0 正式发布:面向 Agent 应用的 Online RL 微服务架构升级
2026-06-19
从 BERT 标注到 Agent Skill:短文本标签体系的四次“工业革命”
2026-05-14
多轮 Agent 场景下,滴滴的 EAGLE-3 训推加速实践
2026-05-06
谁说 Mac 只能写代码?Google 官宣:M 芯片本地微调 Gemma 4 时代开启!
2026-04-20
用 Unsloth 微调 Embedding 模型,让你的 RAG 检索不再答非所问
2026-04-15
ComfyUI v0.19.0 更新:大量新节点、新模型、新修复与性能优化全面落地,工作流与训练能力再升级
2026-04-13
Agent 持续学习落地路径:先做 Traces,再做 Context,最后才微调模型 | Jinqiu Select
2026-03-23
养死四只龙虾的小白有感
2026-04-15
2026-04-13
2026-04-20
2026-05-06
2026-05-14
2026-06-19
2026-07-02
2026-01-02
2025-11-19
2025-09-25
2025-06-20
2025-06-17
2025-05-21
2025-05-17
2025-05-14
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。