-
大模型生成中避免输出模板化句式的技巧在使用大语言模型进行对话或内容生成时,一个常见问题是输出过于模板化。例如,模型频繁以“根据您的要求”“以下是一个示例”“总的来说”等固定句式开头,显得机械、缺乏个性。这类问题在指令微调模型(如 Llama-3-Instruct、Qwen2.5-7B-Instruct)中尤为明显,因为它们在训练时大量接触了结构化的问答对。虽然这些模板有助于提升任务完成率,但在需要自然语言交互的场景(如客服、创作助手、角色扮演)中会降低用户体验。解决这一问题的关键不是修改模型本身,而是在解码阶段通过 logits 干预抑制高频引导词。一种直接有效的方法是识别并屏蔽常见的模板前缀 token。我们可以借助 tokenizer 对典型模板语句进行编码,然后在生成第一步就禁止这些 token 出现:from transformers import AutoTokenizer, AutoModelForCausalLM, LogitsProcessorListtokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct")model = AutoModelForCausalLM.from_pretrained( "Qwen/Qwen2.5-7B-Instruct", device_map="auto")# 常见模板句式templates = [ "根据您的要求", "以下是一个", "总的来说", "需要注意的是", "您可以参考", "综上所述", "简单来说", "通常情况下"]# 提取这些句式开头的 token ID(只取第一个 token)banned_first_tokens = set()for t in templates: ids = tokenizer.encode(t, add_special_tokens=False) if ids: banned_first_tokens.add(ids[0])class BanTemplateStartLogitsProcessor: def __init__(self, banned_ids, only_first_step=True): self.banned_ids = list(banned_ids) self.only_first_step = only_first_step self.step = 0 def __call__(self, input_ids, scores): if self.only_first_step and self.step > 0: self.step += 1 return scores for tid in self.banned_ids: scores[:, tid] = -float("inf") self.step += 1 return scoresprocessor = LogitsProcessorList([ BanTemplateStartLogitsProcessor(banned_first_tokens)])prompt = "写一段关于人工智能的简短介绍。"inputs = tokenizer(prompt, return_tensors="pt").to("cuda")outputs = model.generate( **inputs, max_new_tokens=100, do_sample=True, temperature=0.8, logits_processor=processor)print(tokenizer.decode(outputs[0], skip_special_tokens=True))这种方法的优势在于:仅影响生成的起始位置,避免过度干预后续内容;同时保留模型原有的表达能力,只是绕开那些“套话”开头。更精细的做法是动态判断当前是否处于“模板高发区”。例如,在用户输入为开放式指令(如“写一首诗”“讲个故事”)时启用屏蔽,而在明确请求结构化回答(如“列出三个优点”)时则关闭。这可以通过简单的规则实现:def should_block_templates(prompt): open_ended_keywords = ["写", "讲", "描述", "创作", "想象", "编"] structured_keywords = ["列出", "总结", "步骤", "原因", "区别"] prompt_low = prompt.lower() if any(k in prompt_low for k in structured_keywords): return False if any(k in prompt_low for k in open_ended_keywords): return True return False # 默认不屏蔽然后在构建 processor 时传入条件:if should_block_templates(prompt): processor = LogitsProcessorList([BanTemplateStartLogitsProcessor(banned_first_tokens)])else: processor = Noneoutputs = model.generate(**inputs, ..., logits_processor=processor)此外,还可以结合生成长度做自适应调整。例如,若 max_new_tokens 较小(<50),说明用户期望简洁回答,此时可允许部分模板;若较长(>150),则更需避免开头套路化以保持内容新鲜感。实践中发现,仅屏蔽前 1~2 个 token 就能显著改善首句多样性。因为大模型一旦走出固定开头,后续文本通常能自然展开。这种“轻推”策略比全局惩罚更安全,也不会导致语义偏离。总之,通过 LogitsProcessor 在生成初期对特定 token 进行软性或硬性屏蔽,是一种低成本、高收益的优化手段。它不需要重新训练模型,也不影响推理性能,却能有效提升生成文本的自然度和个性化水平。
-
在 Go 语言中,defer 语句常用于资源清理,比如关闭文件、释放锁或记录函数耗时。然而,当 defer 与循环结合使用时,如果通过闭包直接引用循环变量,很容易出现意料之外的行为。看一个典型错误示例:func processFiles(filenames []string) { for _, name := range filenames { f, err := os.Open(name) if err != nil { log.Printf("failed to open %s: %v", name, err) continue } defer func() { fmt.Println("Closing", name) f.Close() }() // 处理文件... }}假设 filenames 是 ["a.txt", "b.txt", "c.txt"],你可能期望输出:Closing c.txtClosing b.txtClosing a.txt但实际输出很可能是:Closing c.txtClosing c_txtClosing c.txt所有 defer 闭包打印的都是最后一个 name 的值。原因在于:defer 注册的是一个闭包函数,它捕获的是变量 name 的地址,而不是当前迭代的值。由于 for 循环复用同一个 name 变量,当所有 defer 函数最终执行时(函数返回时),name 已经是循环结束后的最终值(即 "c.txt")。这个问题不仅影响日志输出,更严重的是,如果在 defer 中使用 name 做关键操作(如写入日志文件名、发送指标等),会导致逻辑错误。解决方法是将循环变量作为参数传入 defer 的匿名函数:func processFiles(filenames []string) { for _, name := range filenames { f, err := os.Open(name) if err != nil { log.Printf("failed to open %s: %v", name, err) continue } defer func(n string, file *os.File) { fmt.Println("Closing", n) file.Close() }(name, f) // 立即传入当前值 }}这样,每次 defer 注册时,name 和 f 的当前值会被复制为函数参数,闭包内部使用的是这些副本,而非循环变量本身。另一种写法是,在循环体内创建一个新的局部变量:for _, name := range filenames { filename := name // 创建新变量 f, err := os.Open(filename) if err != nil { continue } defer func() { fmt.Println("Closing", filename) // 捕获的是 filename,不是 name f.Close() }()}因为 filename 在每次循环迭代中都是一个全新的变量,闭包捕获的是各自独立的实例,不会相互干扰。需要注意的是,这个问题不仅出现在 for range 中,普通 for 循环也有类似风险:// 错误for i := 0; i < 3; i++ { defer func() { fmt.Println(i) }() // 全部打印 3}// 正确for i := 0; i < 3; i++ { defer func(x int) { fmt.Println(x) }(i)}从 Go 1.22 开始,语言规范已修改:for 循环中的循环变量在每次迭代时都会创建新实例,上述问题在新版本中不再出现。但在 Go 1.21 及更早版本中,该问题依然存在。因此,为了兼容旧版本或避免混淆,推荐始终通过参数传递或显式拷贝的方式处理循环中的 defer 闭包。这不仅保证行为正确,也使代码意图更清晰。总之,在循环中使用 defer 时,若闭包依赖循环变量,务必确保捕获的是当前迭代的值,而不是共享的循环变量本身。这是一个小细节,却能避免隐蔽的逻辑 bug。
-
近年来,大模型技术爆发,以及相应的基础设施、工程能力、数据质量和前端应用不断完善,推动人工智能更具推理能力和行动能力,逐渐深入制造、能源、医疗、城市治理等具体场景,解决生产生活中的复杂问题,同时政府与企业通过合作“搭台子”,加速AI创新和人才培育,为我国人工智能产业繁荣发展和竞争力提供了坚实的土壤。12月4日,由华为云计算技术有限公司和互联网与工业融合创新工业和信息化部重点实验室共同指导,由SISPARK(苏州国际科技园)和华为(苏州)人工智能创新中心联合主办,工业互联网产业联盟承办,北京邮电大学协办的“华为云杯”2025人工智能OPC应用创新大赛暨颁奖活动在苏州工业园区隆重举行。 活动现场赛事沿袭“创客”与“企业”两大赛道的赛制,聚焦自主决策AI、工业物联网、智能硬件等方向,同时今年特别提出“OPC(个人+AI员工即公司)”理念,吸引了344支创客团队和229支企业团队参与角逐,贯彻“以赛促建、以赛促创、以赛引智、以赛育才”的理念,为苏州发展人工智能产业、打造人工智能高地注入有生力量。前瞻布局、久久为功,苏州工业园区人工智能产业生态开花结果当下,人工智能技术驱动科技进步、经济增长和社会发展的深刻意义已得到充分验证,而苏州工业园区作为全国首个明确提出聚焦人工智能产业的园区,长期以来通过出台利好政策、搭建基础设施、构筑产业生态,形成“筑巢引凤”的良好态势。目前,园区已集聚人工智能相关企业超1800家,产业规模突破千亿元,累计培育境内外上市企业20家、各级独角兽企业64家,并汇聚了众多国内外龙头企业的研发中心。 在这个进程中,苏州工业园区与华为云携手打造的“华为云杯”赛事成为一张亮眼名片。自举办以来,规模逐年攀升,赛制不断完善,成为苏州工业园区汇聚创新要素,推动项目落地的重要平台,也为广大人才团队提供了一个孵化未来的创新引擎。根据规划,园区将依托扎实的产业基础,开放的应用场景和精准的政策支持,进一步推动大赛创新成果落地转化,同时在创业孵化、金融支持、知识产权保护等方面构建更加友好、更具支持性的生态系统,让更多的单人成军的OPC创新实践在园区开花结果。华为云中国区泛政府拓展部部长徐卫星在致辞中表示,通过“华为云杯”赛事,大量优秀成果、团队和OPC超级个体成功入驻苏州工业园区,为园区人工智能产业发展注入更多有生力量,融入苏州本地战略高端产业蓬勃发展的态势,未来华为云将持续携手园区,完善创新孵化机制,营造商机聚集、创新创业的繁荣环境和氛围,为全国其他区域打造培育战略产业生态的标杆,为国家“AI+”战略布局推进注入更多的“苏州力量”。与时俱进、逐浪潮头,赛事助力数智技术切实赋能实体产业今年,“华为云杯”2025人工智能OPC应用创新大赛参赛热度高涨,在赛制设置上继续沿袭了赛事一直以来“与时俱进,逐浪潮头”的优良传统:在创客赛道上设置开放式命题,鼓励参赛选手探索有具体落地场景、实用性及创新性的AIoT作品或方案,涵盖今年大热的具身机器人交互,以及工业智能感知与监控、数据驱动的智能决策与服务和智慧医疗等场景,企业赛道考题则围绕“AI+制造”“AI+医疗”“AI+机器人”三大热门方向,充分展现大赛注重产业现实问题、赋能实体经济的积极意义。 值得关注的是,随着大模型、生成式AI、自动化编程工具等技术加速成熟,“AI+个体”的研发、运营与商业化能力被成倍放大,正在改变青年群体的创业生态。对此苏州工业园区首次引入“OPC”理念,通过政策制定、平台建设、服务支持等多方面,加速构建“一个人”到“一支队伍”的创业新范式,本次大赛也为OPC创客提供了一展长才的舞台,吸引更多参赛者加入。自2025年7月起经过报名、提交、初审、决赛环节之后,经过多轮权威评审,最终创客赛道9支队伍、企业赛道19支队伍脱颖而出,成功斩获大赛奖项。活动现场为两大赛道举行了颁奖仪式,获奖代表各自受邀进行分享演讲。 颁奖仪式以赛引智、探索前沿,专家大咖交流共同把脉技术演进同时,历届赛事环境均基于华为云IoT平台全场景云服务搭建,并引入了AI、鸿蒙、大数据等技术,赛事期间也设置了丰富的宣讲、路演等交流活动,成为选手精进数智技术、了解前沿趋势、互通生态有无的窗口。会上,多位专家学者、技术大咖带来主题演讲。中国信通院技术与标准研究所主任工程师、工信部信息模型实验室主任余思聪指出,人工智能的精确性很大程度上取决于高质量的数据进行相应支撑,当下我国数据供给与汇聚能力不断增强,总体规模庞大、类型丰富,同时也面临底层数据质量差、结构复杂等挑战,需要进一步完善数据标准、数据加工和数据标注的专业工具,夯实数据服务基础设施,进一步放大人工智能的生产力作用。 中国信通院技术与标准研究所主任、信息模型与人工智能实验室主任余思聪北京邮电大学教授,人工智能中心主任滕颖蕾也强调,智能计算是发展工业5.0的关键,支撑多模态感知与融合计算、工业知识增强、工业智能体、边云协同智能等关键技术,其中多模态AI是工业5.0发展的核心路线,同时在自动驾驶、智能医疗、智慧城市等也有着广泛应用,完善的基础设施和底层技术,使得工业5.0加速演进,蕴含AI的深层应用机会,尤其现代AI智能与复杂工业领域深度融合,能够带来前所未有的发展机遇。 北京邮电大学教授,人工智能中心主任滕颖蕾端边云协同同样是工业制造领域智能化升级的关键技术,华为云AIoT研发总监介绍AIoT和鸿蒙操作系统的结合,能够破除烟囱式建设的顽疾,实现数据统一接入、统一处理、统一加工,例如工业制造、智慧城市等领域,企业可通过鸿蒙设备连接华为云AIoT平台,实现一站式开发,再通过华为云平台全场景服务进行加工、使用,最后通过标准化方式开放给上层应用,解决能力重复建设的问题,加速产业智能化进程。数智技术的发展演进,为技术研发、人才培育、创新创业带来全新的面貌,“华为云杯”自举办以来,始终立足于产业和社会的发展需求,贴近生产生活实际,让更多优秀创客和优秀企业被挖掘、被看见,形成繁荣的AI新生态。未来,华为云将持续携手苏州工业园区,紧抓人工智能变革机遇,积极抢占“AI+”高地,营造新质生产力热土,助力苏州开创产业高端化升级、经济高质量发展的新局面。
-
明天,12 月 27 日,2025 华为开发者大赛总决赛暨开发者年度会议将在上海 · 华为练秋湖研发中心正式开启。从代码成型到方案打磨,再到最终站上决赛舞台,这一路并不轻松。明天,所有准备都将被带到现场,用一次完整的展示,交出最终答案。作为本届大赛的合作伙伴与可观测性赛道支持方,观测云已经就位。展台已搭建完成,技术与团队已在现场待命,期待与每一位开发者面对面交流,见证作品真正走上舞台的那一刻。舞台已经亮灯,答案即将揭晓。明天,观测云在练秋湖,等你到场!
HuaweiCloudDeveloper
发表于2025-12-26 15:30:20
2025-12-26 15:30:20
最后回复
HuaweiCloudDeveloper
2025-12-26 15:30:20
41 0 -
【获奖公示—云学堂产品体验官平台优化及AI用户有奖调研】一、反馈有奖—具体中奖名单见本论坛贴附件,PC端下载后查看二、公示时间:2026年1月22日—1月27日(含),若有疑问请在该时间段反馈,逾期视为放弃奖励!三、获奖用户收货地址反馈:cid:link_1(重要,请务必在1月27日(含)前填写,逾期视为放弃奖励!)四、奖品发放:所有奖励将于活动公示期后陆续安排发放。 【活动简介】 云学堂为了更进一步满足用户需求、提升体验,更加贴合用户应用场景,我们发起本次产品体验官活动,邀请您提出宝贵的改进建议,帮助产品开发和优化迭代。期待连接广大开发者们的力量,合力构建易用、好用、开放的学习平台。一、【活动时间】 2025.12.25-2025.1.18二、【参与入口】cid:link_0三、【有奖调研问卷】问卷1、平台内容/体验优化调研,面向云学堂全体用户,参与平台内容/体验优化,有奖反馈。 点击链接填写问卷 cid:link_2 将您在使用或体验云学堂的感受及建议通过问卷形式反馈给我们,可以围绕平台内容、体验流程、创新点等。问卷2、AI用户定向调研,面向AI领域的从业者、初学者、老师、学生及计划学习AI的爱好者。 点击下方对应链接填写问卷 学生或高校老师:cid:link_3 企业或个人开发者:cid:link_4 反馈有奖说明1、所有用户问卷1和问卷2均可参与填写,同一用户最多可获得1个问卷的奖励2、填写完整问卷,符合条件的价值反馈可以获得定制帆布包、定制雨伞、华为云云宝盲盒。3、同样问题反馈问卷提交时间最早且被采纳的才是有效反馈方可获得奖励。4、完成问卷调研并符合条件的有效反馈将于活动结束后统一公示。 更多信息可前往活动页查看!
-
【Orange Pi AIpro/ Kunpeng Pro】香橙派开发板审核及发货问题公告 https://www.hiascend.com/forum/thread-0268202032339670055-1-1.html
-
前言携手共创,致敬不凡!2025年,OpenTiny持续在前端开源领域扎根,每一位开发者都是推动项目共同前行的宝贵力量。从bug修复,到技术探讨;从参与开源活动,到输出技术文章;从使用项目,到参与共建,每一步跨越,都凝聚了开发者的智慧与汗水。致敬所有在OpenTiny社区里默默付出、积极贡献、引领创新的杰出个人,我们正式启动“OpenTiny年度贡献者评选”活动!快为你喜爱的人气贡献者投票吧~人气贡献者评选名单公布:年度贡献者投票评选时间:2025年12月25日-2025年12月31日投票规则:每人每天可回答3次,每次最多可投2票,最终投票结果选取前5名投票入口:cid:link_0关于OpenTiny欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~OpenTiny 官网:https://opentiny.designOpenTiny 代码仓库:https://github.com/opentinyTinyVue 源码:https://github.com/opentiny/tiny-vueTinyEngine 源码:https://github.com/opentiny/tiny-engine欢迎进入代码仓库 Star🌟TinyEngine、TinyVue、TinyNG、TinyCLI~ 如果你也想要共建,可以进入代码仓库,找到 good first issue标签,一起参与开源贡献~
-
各位老师、同学们好: 感谢对华为AI百校计划的支持。 1.请注意:2025年的算力额度年底将会过期,请务必在2025年12月30日之前转换成代金券(有效期90天)。2.26年初申请算力额度时,注意可将额度有效期填写至26年底(有效期最长) >>华为AI百校官网:cid:link_1 >>额度转成代金券操作指导:cid:link_0
-
如何快速找到全部资源,进行删除呢?登录华为云官网点击右上角“控制台”,进入控制台页面上方导航栏,点击“资源”,选择“我的资源”在“导出资源列表”页中,选中需要删除的产品,进行删除操作如图:第一步:登录华为云官网 第二步:资源/我的资源 第三步:导出资源列表,在‘名称’列选中产品,进入详情页,进行删除
-
Mybatis与GaussDBcid:link_0 KubeEdge DMI 框架:设备管理面与业务面数据解耦实现方案cid:link_10 KubeEdge 基于 Kubernetes 实现的高性能特性解析cid:link_1 常见GaussDB的Bind/Describe/Execute/Flushcid:link_11 校园网设备高并发BRAS 设备选型方案分享cid:link_2 闪存存储 NAS 基础配置流程cid:link_12 MDC610 通过 MTB300 转接盒通讯cid:link_13 gs_dump备份cid:link_14 GaussDB xlog追平速度cid:link_3 数据库 OR/IN 条件优化cid:link_4 华为 NE 路由器配置所有 VRF 共用 public 接口传递 BGP 路由cid:link_5 JSONB优化cid:link_6 物化视图优化cid:link_15 PostgreSQL 服务器配置评估:500GB 数据 + 日均 10 万访问量实战指南cid:link_16 Python 内置函数(len/str 等)使用:分清用法 + 速查对照表cid:link_7 GaussDB与达梦cid:link_17 Flyway配置GaussDBcid:link_18 DWS 不同版本支持的JDBCcid:link_8 记一次图像分类排错cid:link_19 CCI CloudBursting 弹性套件支持地址替换与业务零改造的实现机制cid:link_9 话说CCI CloudBursting与编程语言cid:link_20
-
尊敬的各位华为云社区的伙伴们,大家下午好!时光飞逝,2025 年的最后一个月即将画上句号。在这一年的尾声,相信每一位深耕技术的伙伴,都在学习与实践中积累了属于自己的新知识、新收获。今天我们齐聚这个话题讨论活动,就是想搭建一个轻松的交流平台,让大家畅所欲言,分享 12 月份在技术探索路上的所见所闻、所学所感。回顾 2025 年,华为云在 AI 原生、云原生融合、数据底座升级等领域持续发力,尤其是临近年底,不少重磅技术和服务的落地,也为我们带来了更多学习新方向。比如 12 月初刚刚更新的云原生 AI 套件,以 CCE 为基础,实现了 GPU、昇腾 NPU 等异构资源的标准化调度,还深度融合了 Kubeflow、KubeRay 等引擎,让 AI 训练与推理的全流程更高效。不知道有没有伙伴在这个月尝试了这套套件?是在资源调度优化上有新感悟,还是在 AI 流水线搭建中踩了坑、总结了经验?再比如,华为云今年重点推进的 CloudMatrix 超节点架构,在年底已经实现了更强大的算力池化能力,支撑起大规模大模型的训练与推理需求,甚至推出了高效的 Token 推理服务,让算力使用更便捷。这对于从事大模型相关工作的伙伴来说,无疑是重要的技术更新 —— 大家在对接这套新架构时,有没有学到新的算力优化技巧?或者对 AI 原生时代的技术选型有了新的思考?还有数据领域,GaussDB 数据库在 2025 年的升级亮点颇多,不仅实现了原生分布式性能提升 50% 的突破,还推出了 AI 加持的智能运维助手,能自动诊断 90% 的故障。临近年底,很多企业会做数据底座的优化升级,想必不少伙伴在实践中深入学习了 GaussDB 的新特性,比如三层池化架构、同城双集群容灾方案等。这些新知识是否帮你解决了实际工作中的数据管理难题?除了这些核心技术,还有像具身智能平台 CloudRobo、R2C 机器人云通信协议,以及各种行业专属的 AI 解决方案,都在 2025 年持续迭代。或许你在 12 月关注了具身智能在制造、物流场景的落地,或许你学习了新的云安全防护方案(比如大模型安全、防勒索解决方案),又或许你只是扎实掌握了一个基础工具的进阶用法 —— 这些都值得我们拿出来分享。技术的成长从来不是孤军奋战,一次真诚的分享,可能会让一个困惑已久的问题迎刃而解;一个不经意的技巧交流,可能会碰撞出全新的创新思路。今天的讨论没有门槛,无论你学到的是前沿的架构知识,还是基础的实操技巧;无论是踩坑后的经验总结,还是对新技术的展望思考,都可以大胆地说出来。比如,你可以聊聊 “12 月我重点学习了昇腾 NPU 的调度优化,发现 XX 配置能显著提升训练效率”;也可以分享 “我尝试用 GaussDB 的 AI 运维助手处理故障,省去了很多手动排查的时间”;甚至可以提出疑问 “在使用云原生 AI 套件时,遇到了 XX 问题,有没有伙伴有解决方案”—— 每一次表达,都是一次有价值的知识传递。最后,希望大家都能珍惜这次交流的机会,在分享中互补短板、共同成长。让我们在 2025 年的尾声,用一场酣畅淋漓的技术交流,为这一年的学习之旅画上圆满的句号,也为新一年的技术探索积蓄更多力量。
-
一、为什么 CCI CloudBursting 不限制编程语言?这是由它的技术架构决定的,核心逻辑是 “只管容器,不管容器内的代码”:底层聚焦容器层,而非应用层CCI CloudBursting 的核心作用是将 K8s 集群(CCE)的容器负载弹性调度到 CCI Serverless 容器中,它关注的是 “容器镜像是否符合标准”“容器的网络 / 存储 / 资源配置是否兼容 K8s 规范”,而容器内部运行的是 Java 虚拟机、Python 解释器还是 Go 二进制程序,对它来说完全透明。完全兼容标准 K8s 容器部署规范CCI CloudBursting 通过 Virtual Kubelet 将 CCI 伪装成 CCE 集群的 “虚拟节点”,所有调度逻辑都遵循 K8s 标准 —— 只要你的业务能通过 K8s 的 Deployment/StatefulSet 等资源部署(本质是运行容器镜像),不管镜像内的代码用什么语言编写,都能被无缝调度到 CCI,和编程语言无关。二、唯一的 “要求”:容器化符合标准CCI CloudBursting 没有 “编程语言要求”,但有一个通用的容器化规范要求(这是所有容器化部署的基础,并非 CCI CloudBursting 专属):业务代码需打包成标准 OCI 兼容的容器镜像(如 Docker 镜像);镜像需定义清晰的启动命令(ENTRYPOINT/CMD),能独立运行;若业务需要对外提供服务,需在容器中暴露指定端口(符合 K8s Service 的端口映射规范);避免依赖宿主机的特定环境(如宿主机的语言运行时、全局依赖包)—— 这是容器化的通用最佳实践,而非 CCI CloudBursting 的限制。三、常见编程语言的适配(均无需改造)不管你的业务用哪种语言开发,只要做好容器化,就能直接用 CCI CloudBursting:编程语言容器化示例(核心 Dockerfile 片段)CCI CloudBursting 适配说明JavaFROM openjdk:8<br>COPY app.jar /<br>ENTRYPOINT ["java","-jar","/app.jar"]无需修改 jar 包代码,容器化后直接弹性扩展PythonFROM python:3.9<br>COPY app.py /<br>ENTRYPOINT ["python","/app.py"]无需修改 Python 脚本,依赖包打包进镜像即可GoFROM alpine<br>COPY app /<br>ENTRYPOINT ["/app"]Go 编译为静态二进制文件,容器化后直接运行,无额外依赖Node.jsFROM node:16<br>COPY app.js /<br>ENTRYPOINT ["node","/app.js"]无需修改 JS 代码,package.json 依赖打包进镜像C++FROM gcc:9<br>COPY app /<br>ENTRYPOINT ["/app"]编译后的二进制文件打包进镜像,直接运行四、注意一下下避免硬编码宿主机 IP / 端口:依赖 K8s Service 的服务发现(如通过 Service 名称访问),而非硬编码,这能保证弹性到 CCI 后仍能正常通信(和语言无关);无状态优先:若业务是有状态的(如数据库),需确保存储卷(PVC)兼容 CCI(如使用华为云 EVS/SFS),但这是存储层面的适配,而非语言要求;健康检查适配:按 K8s 规范配置 liveness/readiness 探针(如 HTTP 接口、命令行检查),确保 CCI 能识别容器状态,这和语言无关,只需在 K8s 配置中定义即可。总结一下下CCI CloudBursting无任何编程语言限制,支持所有能打包成标准容器镜像的语言;核心要求是业务符合容器化标准,而非针对语言做改造;只需按常规容器化流程打包业务,即可直接使用弹性扩展能力,无需修改任何语言相关的代码或配置。
-
CCI CloudBursting 弹性套件通过三大核心技术实现了弹性过程中的地址替换与业务零改造,让企业能够在不修改一行代码的情况下,将 CCE 集群负载无缝扩展到 CCI 上:一、地址替换的实现机制1. 镜像地址自动转换核心技术:正则表达式替换 + 自动认证匹配CloudBursting 套件通过 Bursting 插件在调度过程中自动执行:定义正则表达式规则,将用户 pod yaml 中的镜像地址(如registry.example.com/app:v1)自动替换为华为云 SWR 仓库地址(如swr.cn-north-1.myhuaweicloud.com/app:v1)无需人工干预,弹性过程中业务完全无感,无需处理配置差异自动匹配华为云 SWR 仓库认证凭据,无需业务适配认证信息 2. 网络地址透明转换核心技术:Virtual Kubelet + 统一 Service 发现虚拟节点抽象:Bursting 插件作为 Virtual Kubelet,将 CCI 伪装成 CCE 集群中的一个 "虚拟节点",对业务透明统一 Service 入口: 客户端 → Service(CCE) → Pod(CCE)或Pod(CCI) 无论请求转发到 CCE 还是 CCI 上的 Pod,Service IP 保持不变,业务无需修改连接配置支持 ELB 和 Ingress:弹性负载均衡和入口资源自动覆盖 CCE 和 CCI 实例,实现统一对外服务二、业务配置零改造的实现原理1. 全链路 K8s 兼容性核心技术:K8s API 无缝对接 + 资源统一管理Bursting 插件完全兼容 K8s API,无需修改业务 pod 定义,可直接调度到 CCI支持四种核心负载类型无缝扩展:Deployment、StatefulSet、Job、CronJob资源统一管理:Pod、ConfigMap、Service 和 Secret 等资源统一从原 CCE 集群下发到 CCI自动处理环境变量、Volume 挂载、注解等配置,与 CCE 环境完全一致2. 三大零改造保障机制① 网络与服务发现透明化Pod 间网络互通:CCI 与 CCE 实例间自动建立网络隧道,无需修改网络配置,可直接通过 Pod IP 通信DNS 自动解析:自动处理 CCI 实例的 DNS 注册与解析,保证服务发现正常Service 端点自动聚合:CCI 实例自动注册到 K8s Service,实现负载均衡器后端自动扩展② 运维与监控一致性CCI Pod 提供与 CCE 相同的普罗米修斯监控接口,无缝对接企业现有监控系统内置Fluent-Bit 日志插件,支持直接将日志发送到企业 Kafka 等日志系统,无需额外配置提供统一的K8s 事件上报,运维人员可通过原 CCE 控制台统一监控所有实例状态③ 弹性策略完全兼容支持在原有 CCE 集群中定义弹性策略,无需修改业务代码即可实现负载在 CCE 和 CCI 间自动迁移提供四种弹性模式: auto: 集群资源不足时自动弹性至CCIlocalPrefer: 优先使用本地资源,不足时扩展至CCI(推荐)enforce: 强制所有负载运行在CCI上off: 不使用CCI弹性(默认)只需在工作负载上添加简单标签virtual-kubelet.io/burst-to-cci即可启用 三、实施效果与典型案例1. 核心优势业务零感知:弹性过程中无需修改一行代码,完全兼容现有 K8s 应用秒级弹性响应:支持4,000 Pods/30 秒的极致弹性,轻松应对突发流量成本优化:无需为峰值流量预留大量 CCE 资源,仅为实际使用的 CCI 资源按秒计费某证券平台实施后资源成本降低 40%,运维效率提升 95%四、总结一下下CCI CloudBursting 弹性套件通过 "Virtual Kubelet 虚拟节点 + 镜像地址自动替换 + 统一服务发现"三位一体的技术方案,实现了弹性过程中地址替换与业务配置零改造的核心能力。企业只需在现有 CCE 集群中安装 Bursting 插件并配置简单的弹性策略,即可享受 CCI 的极致弹性,同时保持业务系统完全不变,真正实现 "一键部署,业务零改造,弹性无忧" 的云原生体验。实现关键点:镜像地址自动转换:正则表达式替换 + 自动认证网络透明:虚拟节点 + 统一 Service 入口业务零改造:K8s API 兼容 + 资源统一管理 + 运维监控一致
-
当CV模型-图像分类2.0进行模型训练时,模型训练报错[rank6]: UnboundLocalError: local variable 'avg' referenced before assignment时一、先搞懂报错核心原因这么说吧,UnboundLocalError的本质不是 CV 模型本身的问题,而是代码里的 “逻辑覆盖不全”:你代码中后续要使用avg变量(比如打印平均损失、返回平均准确率),但avg只在有数据的分支里赋值(比如训练循环执行时);当 rank6 节点的训练批次为空(比如分布式数据分片时,该 rank 分到的样本数为 0),赋值avg的逻辑没触发,后续引用avg就会直接报错。在图像分类 2.0 模型训练中,这个问题最常出现在两个场景:训练循环无数据:rank6 的 dataloader 为空(总样本数不能被 rank 数整除,最后一个 rank 没样本),计算平均损失 / 准确率的循环没执行,avg未赋值;条件分支覆盖不全:avg仅在if分支(比如 “有预测结果”)里赋值,else分支没赋值,却在后续直接引用。二、分步解决:先定位,再修复步骤 1:定位报错的具体代码行先看报错堆栈(关键!),比如报错日志会显示: [rank6]: UnboundLocalError: local variable 'avg' referenced before assignmentFile "train.py", line 289, in train_one_epoch logger.info(f"Rank {rank} epoch {epoch} avg acc: {avg_acc}") 这就明确了:train_one_epoch函数的 289 行引用了avg_acc,但这个变量可能没赋值。步骤 2:分析图像分类训练中最典型的错误逻辑咱们不妨看看图像分类训练里,计算平均指标的常见错误代码(这也是你大概率踩坑的地方): def train_one_epoch(model, dataloader, criterion, optimizer, rank): losses = [] correct = 0 total = 0 # 训练循环:若dataloader为空,这个循环完全不执行 for images, labels in dataloader: # 前向传播(图像分类核心逻辑) outputs = model(images) loss = criterion(outputs, labels) losses.append(loss.item()) # 计算准确率 _, preds = torch.max(outputs, 1) correct += (preds == labels).sum().item() total += labels.size(0) # 反向传播 optimizer.zero_grad() loss.backward() optimizer.step() # 问题1:若循环没执行,sum(losses)/len(losses)不会执行,avg_loss未赋值 avg_loss = sum(losses) / len(losses) # 问题2:若total=0,correct/total会除以0,且avg_acc未赋值 avg_acc = correct / total # 引用未赋值的avg_loss/avg_acc,rank6无数据时直接报错 print(f"Rank {rank} avg loss: {avg_loss}, avg acc: {avg_acc}") return avg_loss, avg_acc 步骤 3:修复代码(核心!确保 avg 在所有场景下有赋值)核心修复思路:初始化 avg 为默认值 + 加条件判断避免空数据 / 除以 0,修复后的代码如下(可直接替换): def train_one_epoch(model, dataloader, criterion, optimizer, rank): losses = [] correct = 0 total = 0 # 修复1:初始化avg变量,避免未赋值(关键!) avg_loss = 0.0 avg_acc = 0.0 for images, labels in dataloader: outputs = model(images) loss = criterion(outputs, labels) losses.append(loss.item()) _, preds = torch.max(outputs, 1) correct += (preds == labels).sum().item() total += labels.size(0) optimizer.zero_grad() loss.backward() optimizer.step() # 修复2:加条件判断,仅当有数据时计算平均值 if len(losses) > 0: avg_loss = sum(losses) / len(losses) else: # 空数据时记录日志,方便排查 print(f"[Rank {rank}] Warning: 无训练数据,avg_loss设为0.0") # 修复3:避免除以0,同时处理空数据 if total > 0: avg_acc = correct / total else: print(f"[Rank {rank}] Warning: 无有效样本,avg_acc设为0.0") # 此时avg_loss/avg_acc必有值,不会报错 print(f"Rank {rank} avg loss: {avg_loss}, avg acc: {avg_acc}") return avg_loss, avg_acc 步骤 4:分布式训练额外处理(针对 rank6 无数据的根因)rank6 节点无数据的本质是分布式采样器分片不均,可以在构建 dataloader 时补充配置,从根源避免空数据: from torch.utils.data.distributed import DistributedSampler# 构建分布式采样器(图像分类训练的标准配置)train_sampler = DistributedSampler( train_dataset, # 你的图像分类训练数据集 num_replicas=world_size, # rank总数(比如8) rank=rank, # 当前rank drop_last=True # 核心!丢弃最后一个不完整批次,避免某rank无数据)# 构建dataloadertrain_dataloader = torch.utils.data.DataLoader( train_dataset, batch_size=batch_size, # 批次大小 sampler=train_sampler, # 使用分布式采样器 num_workers=4, # 数据加载线程 pin_memory=True # 加速GPU数据传输) drop_last=True:会丢弃总样本数不能被num_replicas×batch_size整除的最后一个批次,确保每个 rank 的 dataloader 都有数据;若不想丢弃样本:可以给数据集补充 “dummy 样本”(比如复制最后几个样本),让总样本数能被整除。三、额外避坑点(CV 图像分类 2.0 训练专属)验证集 / 测试集同样要处理:不仅训练循环,验证 / 测试阶段计算 avg 指标时,也要按上述方式初始化 + 条件判断,避免 eval 阶段报同样的错;分布式指标同步:若需要跨 rank 同步 avg 指标(比如求所有 rank 的平均损失),空数据的 rank 用 0 值填充,再用torch.distributed.all_reduce同步;日志打印要明确:给空数据的 rank 加日志(比如[Rank 6] 无训练数据),方便后续排查数据分片问题。总结一下下核心问题:avg变量仅在有数据的分支赋值,rank6 节点无数据导致未赋值,触发UnboundLocalError;修复关键:先初始化avg为默认值(如 0.0),再通过条件判断避免空列表 / 除以 0;分布式兜底:设置DistributedSampler(drop_last=True),避免某 rank 的 dataloader 为空。
-
一、先理清 DWS JDBC 驱动基础DWS 有两类 JDBC 驱动(参数支持以专用驱动为准):兼容 PostgreSQL 驱动:基于 PostgreSQL JDBC 驱动修改,参数兼容度高,但功能有限;DWS 专用驱动(推荐):华为自研,全名为gaussdb-dws-jdbc,适配 DWS 各版本特性,参数支持更贴合 DWS 场景。驱动坐标(Maven): <dependency> <groupId>com.huaweicloud.dws</groupId> <artifactId>gaussdb-dws-jdbc</artifactId> <version>8.2.0</version> <!-- 匹配DWS服务端版本,如8.1/8.2/9.0 --></dependency> 二、DWS 各版本支持的 JDBC URL 连接参数DWS 的参数支持随版本迭代逐步扩展,核心参数全版本兼容,新增参数主要集中在 8.1 + 版本。以下是按 “必选 / 常用 / 进阶” 分类的支持参数,标注版本适配性:1. 核心基础参数(所有 DWS 版本支持)这类参数是 DWS 连接的必备 / 高频配置,和业务直接相关:参数名取值 / 格式作用说明示例user字符串(数据库用户名)必选,DWS 数据库登录用户名user=dbadminpassword字符串(数据库密码)必选,DWS 数据库登录密码password=Admin@123currentSchema字符串(Schema 名称)核心!指定默认 Schema,替代SET search_path TO xxx,和你示例中的用法一致currentSchema=testapplicationName字符串(应用标识)设置连接的应用名称,用于 DWS 控制台监控连接来源,排查问题applicationName=springboot-appreadOnlytrue/false设置连接是否为只读模式,只读连接无法执行 DML/DDLreadOnly=truebinaryTransfertrue/false是否启用二进制数据传输(如 bytea 类型),开启可提升大数据传输性能binaryTransfer=trueprepareThreshold整数(默认 5)预处理语句(PreparedStatement)的缓存阈值,超过阈值则缓存执行计划prepareThreshold=102. 安全相关参数(DWS 8.1.x 及以上支持)DWS 对安全参数的支持从 8.1 版本开始完善,主要用于 SSL 加密连接:参数名取值 / 格式作用说明示例ssltrue/false是否启用 SSL 加密连接(DWS 生产环境强制要求)ssl=truesslmodedisable/allow/prefer/require/verify-ca/verify-fullSSL 连接模式,生产推荐 verify-full(校验服务端证书)sslmode=verify-fullsslrootcert字符串(证书路径)指定 CA 证书文件路径(配合 sslmode=verify-ca/verify-full 使用)sslrootcert=/opt/cert/root.crtsslcert字符串(客户端证书路径)客户端证书路径(双向认证时使用)sslcert=/opt/cert/client.crt3. 编码 / 语法适配参数(DWS 8.1.x 及以上支持)用于适配 DWS 的字符编码和 SQL 语法特性:参数名取值 / 格式作用说明示例stringtypeunspecified/varchar/string字符串类型映射规则,指定 Java String 映射为 DWS 的 varchar/string 类型stringtype=varcharescapeSyntaxCallModeliteral/call/function函数调用语法转义模式,适配 DWS 的自定义函数调用escapeSyntaxCallMode=functionallowEncodingChangestrue/false是否允许连接后修改客户端编码(DWS 默认 UTF8,不建议开启)allowEncodingChanges=false4. 性能调优参数(DWS 8.2.x/9.0.x 及以上支持)高版本 DWS 新增的性能相关参数,适合大规模数据交互场景:参数名取值 / 格式作用说明示例batchModetrue/false是否启用批量执行模式,提升批量插入 / 更新性能batchMode=truefetchSize整数(默认 100)设置 ResultSet 的默认.fetchSize,控制一次从服务端拉取的数据量fetchSize=500loglevelOFF/DEBUG/INFO/WARN/ERROR驱动日志级别,用于调试连接 / 执行异常(仅调试用,生产禁用)loglevel=INFO5. DWS 版本参数支持差异表DWS 版本核心支持参数新增特性8.0.xcurrentSchema、user、password、applicationName仅基础参数,无 SSL 高级配置8.1.x新增 ssl、sslmode、stringtype完善 SSL 加密,基础语法适配8.2.x新增 escapeSyntaxCallMode、batchMode性能调优 + 语法增强9.0.x+新增更多监控 / 调优参数适配 DWS MPP 架构的分布式优化三、DWS 不支持的 PostgreSQL 参数你提到的 connectTimeout、socketTimeout 是开源 PostgreSQL 的常用参数,但 DWS 不支持,这里列出核心不支持参数及实战替代方案:不支持参数开源用途DWS 替代方案connectTimeout连接建立超时(毫秒)通过 Java 代码设置:DriverManager.setLoginTimeout(10);(单位:秒,设置登录超时)socketTimeout套接字读写超时(毫秒)1. 单语句超时:statement.setQueryTimeout(30);(单位:秒,设置查询超时) 2. 全局超时:通过 DWS 服务端配置statement_timeout参数loginTimeout登录超时(秒)同 connectTimeout,用DriverManager.setLoginTimeout()keepAliveTCP 保活开关DWS 服务端默认开启 TCP 保活,无需客户端配置tcpKeepAliveTCP 保活参数同上,由 DWS 服务端管控替代方案示例代码(设置超时): import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class DWSJdbcDemo { public static void main(String[] args) throws Exception { // 1. 加载DWS驱动 Class.forName("com.huawei.gauss200.jdbc.Driver"); // 2. 设置登录超时(替代connectTimeout,单位:秒) DriverManager.setLoginTimeout(10); // 3. 构建DWS JDBC URL(核心参数示例) String url = "jdbc:postgresql://10.10.0.13:25308/postgres?currentSchema=test&ssl=true&sslmode=verify-full&applicationName=demo-app"; // 4. 建立连接 try (Connection conn = DriverManager.getConnection(url, "dbadmin", "Admin@123")) { // 5. 设置查询超时(替代socketTimeout,单位:秒) Statement stmt = conn.createStatement(); stmt.setQueryTimeout(30); // 30秒超时 // 执行SQL stmt.executeQuery("SELECT * FROM test_table"); } }} 四、DWS JDBC URL 完整示例(不同场景)1. 基础连接(8.0 + 版本) jdbc:postgresql://10.10.0.13:25308/postgres?currentSchema=test&user=dbadmin&password=Admin@123&applicationName=app1 2. 加密连接(8.1 + 版本,生产环境) jdbc:postgresql://10.10.0.13:25308/postgres?currentSchema=test&ssl=true&sslmode=verify-full&sslrootcert=/opt/cert/root.crt&user=dbadmin&password=Admin@123 3. 性能优化连接(8.2 + 版本) jdbc:postgresql://10.10.0.13:25308/postgres?currentSchema=test&binaryTransfer=true&prepareThreshold=20&batchMode=true&user=dbadmin&password=Admin@123 总结一下下核心支持参数:currentSchema(全版本)、ssl/sslmode(8.1+)、applicationName、binaryTransfer 等是 DWS 的高频可用参数;不支持参数:connectTimeout/socketTimeout 等超时参数需通过 Java 代码(登录超时 / 查询超时)替代;版本适配:8.0 仅基础参数,8.1 + 新增 SSL 安全参数,8.2 + 新增性能调优参数,建议驱动版本与 DWS 服务端版本一致;生产建议:必加 ssl=true+sslmode=verify-full(加密)、currentSchema(指定默认 Schema)、applicationName(便于监控)。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签