-
学校:西安交通大学团队名称:吴彦组团队成员:李浩宇 孙昊 汤昊东 王锘淳 王睿 肖梓宸 杨丁欢 杨佳潮提交日期:2026年7月项目地址cid:link_0作品介绍华为云开发者训练营优秀作品展示馆平台,是面向华为云开发者高校训练营活动的作品展示与互动平台。平台支持用户注册登录、作品提交与审核、多维互动评价(点赞/点踩/问号/收藏/投票)、评论回复、排行榜系统、赛道管理、奖项配置与获奖展示、后台管理等功能。平台覆盖4类用户角色(访客、学生、导师、管理员),提供12个前端页面,包含30余个RESTful API接口,采用前后端分离架构,部署于华为云ECS,实现从0到1的完整产品交付。首页首页主要展示网站整体数据与精选作品、排行榜等等功能,同时可以一键进入各大板块。登录界面可以选择手机号或者邮箱登录,登录完成后页面自动更新。图1 作品首页设计作品展示各种参赛作品的板块,所有审核通过的作品都可以展现在这里,实现了按时间排序、热度排序、点赞最多排序等排序方式,还有赛道区分,同赛道作品推荐,点赞评论交互功能,查看项目地址等等功能,方便开发者展示分享自己的成果。点赞与评论为实时功能,自动更新。图2 作品页面赛道展示目前可以参加的所有赛道种类以及相应的作品排行支持综合排行、点赞排行、热度排行等等的多元排行标准盛典所有获奖的各赛道作品可以在盛典处展示后台可以提交作品,申请提权,游客需要成为学生或者导师角色才可以发布作品,导师可以审核学生提交的作品,管理员可以提交,审核作品,也可以给作品颁奖,修改用户权限,管理网站注册用户等等。图3 管理员界面后台开发经验一完成分组,我们组就进入了热烈的讨论环节。首先我们组的每一位同学都对我们组将要开发的项目进行了分析,考虑到以下三个事实:1.我们组是所有组之中人数最多的组,足足有八个人,比其他的组整整多出了一倍。2.本次活动开发的部署是在华为云ECS上的,考虑到项目成本与开发限制,我们只能部署在单虚拟机,最多挂载一个新的云硬盘,对项目架构有了限制。3.目前AI Vibe Coding还停留在小规模编程上面,在大规模编程和项目开发方面还极度依赖人工功能检查与审核修复。我们讨论并决定采取针对性的措施。对于第一点事实,我们决定首先建立类似目前人工开发的项目管理分工,两人制作开发WORD与技术PPT,两人准备排练上台演讲,四人负责后台开发分工,用来方便更加细致的项目管理与内容准备。事实上,正因为这样的分工,我们在开始编程的第一天决定技术栈并形成项目基本框架之后,就可以让负责制作开发文档和负责上台分享的同学早早开始准备,这样给负责分享的同学极大的空间余裕,让同学能够有更多的时间对底层技术栈以及网页展示进行了解和打磨,展示出更好的效果。针对第三点问题,我们还针对性采取了修改项目架构的方式,我们通过与码道的智能体实现进行沟通,选定了使用Vue+Spring Boot作为前后端底层架构,数据统一使用MySQL挂载在云硬盘上,使用Redis作为热更新缓存,这样的话一方面统一了前后端接口,方便前后端同学并发开发,提高开发效率;另一方面契合了我们的部署开发环境,减少了网站的运营维护开支。针对第三点问题,我们决定采取一部分现代软件工程已经成熟的做法,即把整个代码库放置到GitCode上面,借助华为自主开发的AIShell智能体,我们能够很方便的完成GitCode库项目的实际落地部署和拉取更新,让AIShell总结出在部署过程中遇到的问题,然后利用码道在本地改后向GitCode提交PR,这样一方面方便了本地调试,另一方面也方便我们在本地看到项目实际发生的变化,避免了对于华为ECS上相对GUI系统比较陌生的Linux文本行命令操作。还有,针对我们项目的DEBUG过程,我们采取List+PR的修改方式,也就是所有人往微信群里面接龙List更新需要修复的BUG,让一位开发同学统一进行修改,类似更迅速的GitCode里面的Issues操作;针对目前AI修改代码往往不进行单点修改,而是修改整个项目的情况,对于前端同学提交的修改PR,我们不选择直接合并,而是让码道总结出来一个CHANGE.md,然后交给一位同学进行统一修改,这样就避免了Git合并代码过程中合并冲突的情况。最后,经过评委老师的指点,我们还学习了一些新的开发经验。首先,在项目开始之前可以使用AI进行洞察,就是针对目前做的比较好的厂家,总结经验进行学习;其次,在开发过程中不能对AI盲目相信,对于有疑问的点,比如说未登陆账号的浏览量是否算数的问题,应当自己查证业界成熟做法,而不是全信AI。项目readme## 技术栈| 层级 | 技术 ||------|------|| 前端 | Vue 3 + Vue Router + Vite 6 || 后端 | Spring Boot 3.2.5 + Spring Data JPA + Spring Security || 数据库 | MySQL 8.0 + Redis 7.0 || 认证 | JWT (jjwt 0.12.5) || 数据库迁移 | Flyway || 部署 | Nginx + systemd (华为云 ECS) |## 架构图```┌──────────────────────────────────────────┐│ 华为云 ECS (CentOS/Ubuntu) ││ ││ ┌────────────────────────────────────┐ ││ │ Nginx (端口 80/443) │ ││ │ - 静态资源直接返回 (/static/) │ ││ │ - 动态请求代理到后端 (/api/) │ ││ └────────────┬───────────────────────┘ ││ │ ││ ┌────────────▼───────────────────────┐ ││ │ Spring Boot App (端口 8080) │ ││ │ - 文件上传接口 │ ││ │ - 业务逻辑 │ ││ └──────┬─────────────────────────────┘ ││ │ ││ ┌──────▼──────┐ ┌──────────────────┐ ││ │ MySQL 8.0 │ │ Redis 7.0 │ ││ │ (端口3306) │ │ (端口6379) │ ││ └─────────────┘ └──────────────────┘ ││ ││ 文件存储目录: /data/training-files/ ││ (挂载云硬盘或者直接在本地) │└──────────────────────────────────────────┘```---## 本地开发### 前置条件- **JDK 17+**- **Maven 3.8+**- **Node.js 18+**(推荐 20+)- **MySQL 8.0**(本地运行,端口 3306)- **Redis 7.0**(本地运行,端口 6379)### 1. 启动后端```bash# 确保 MySQL 和 Redis 已启动# 创建数据库mysql -u root -e "CREATE DATABASE IF NOT EXISTS devcamp_showcase DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;"# 启动 Spring Boot(使用 dev profile)mvn spring-boot:run -Dspring-boot.run.profiles=dev```后端启动后访问 `http://localhost:8080/api`,Flyway 会自动创建表结构。### 2. 启动前端```bashcd frontendnpm installnpm run dev```前端启动后访问 **http://localhost:3000**,Vite 会自动将 `/api` 请求代理到 `localhost:8080`。### 3. 本地预览(仅前端,无需后端)如果只想看页面效果、不需要真实数据:```bashcd frontendnpm installnpm run dev```打开 http://localhost:3000 即可预览所有页面布局和导航。API 请求会失败,但页面结构完整可浏览。---## 部署到华为云 ECS### ECS 最低配置| 项目 | 推荐 ||------|------|| 规格 | 2核4GB(开发)/ 4核8GB(生产) || 系统 | CentOS 7/8 或 Ubuntu 20.04/22.04 || 磁盘 | 40GB 系统盘 + 可选云硬盘 || 安全组 | 开放 80 端口 |### 方式一:一键部署(推荐)**1. 本地构建**```bash# 构建后端mvn clean package -DskipTests# 构建前端cd frontend && npm install && npm run build && cd ..```**2. 上传到 ECS**```bashscp target/devcamp-showcase.jar root@<ECS_IP>:/data/devcamp-showcase/scp -r frontend/dist root@<ECS_IP>:/data/devcamp-showcase/frontend/scp -r deploy/ root@<ECS_IP>:/data/devcamp-showcase/deploy/```**3. 在 ECS 上执行一键部署**```bashssh root@<ECS_IP>cd /data/devcamp-showcase/deploychmod +x *.sh./deploy.sh```部署完成后访问 `http://<ECS公网IP>`。### 方式二:手动部署详见 [deploy/README.md](deploy/README.md)。### 部署注意事项(踩坑记录)> 以下问题在实际部署中遇到过,请务必留意。1. **MySQL 版本必须 8.0+** - CentOS 7 默认仓库只有 MySQL 5.7,Flyway 9.22+ 和 Hibernate 6 不支持 - 需手动安装 MySQL 8.0 官方仓库:`yum install https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm` - 一键部署脚本已包含自动检测和安装 MySQL 8.0 的逻辑2. **数据库密码需与配置一致** - systemd 服务文件中 `DB_PASSWORD` 环境变量需与实际 MySQL 密码一致 - 也可在 JAR 包同级目录创建外部 `application.yml` 覆盖配置(Spring Boot 自动加载) - 修改密码后需 `systemctl restart devcamp-showcase`3. **生产环境 `ddl-auto` 已设为 `none`** - Flyway 管理表结构,Hibernate 不做 schema 验证,避免 VARCHAR/ENUM 类型不一致报错 - 开发环境仍为 `validate`,方便发现实体与表结构的偏差4. **初始数据由 Flyway 迁移脚本自动插入** - `V2__init_data.sql` 包含管理员账号、示例赛道、奖项和系统设置 - 无需手动注册或执行 SQL5. **Nginx 默认配置冲突** - CentOS 默认 Nginx 配置会拦截 80 端口,需删除 `/etc/nginx/conf.d/default.conf` 或 `/etc/nginx/sites-enabled/default` - 一键部署脚本已自动处理6. **前端文件权限** - Nginx 需要读取前端文件,权限不足会返回 403 - 一键部署脚本已自动设置 `chmod 755` 和 `chown nginx:nginx` - 手动部署时需执行:`chmod -R 755 /data/devcamp-showcase/frontend && chown -R nginx:nginx /data/devcamp-showcase/frontend`7. **Redis 需手动设置开机自启** - 部分系统安装 Redis 后不会自动启用:`systemctl enable redis && systemctl start redis` - 一键部署脚本已包含此步骤### 管理员账号- 邮箱:`admin@devcamp.huawei.com`- 密码:`admin123`- **生产环境请务必修改密码和 JWT 密钥**### 环境变量| 变量 | 说明 | 默认值 ||------|------|--------|| DB_USERNAME | 数据库用户名 | devcamp || DB_PASSWORD | 数据库密码 | DevCamp2026! || REDIS_PASSWORD | Redis 密码 | (空) || JWT_SECRET | JWT 签名密钥 | (见 service 文件) |### 常用运维命令```bashjournalctl -u devcamp-showcase -f # 查看后端日志systemctl restart devcamp-showcase # 重启后端systemctl restart nginx # 重启 Nginxmysqldump -u root devcamp_showcase > backup_$(date +%Y%m%d).sql # 备份数据库```---## 项目结构```HCDevcampShowcase/├── Init.md # 原始需求文档├── List.md # 项目速查手册(供 AI 智能体使用)├── pom.xml # Maven 构建配置├── src/main/java/com/huawei/devcamp/│ ├── DevCampApplication.java # 启动类│ ├── config/ # Security, Redis, WebMvc, JWT Filter│ ├── controller/ # REST 控制器(8 个)│ ├── entity/ # JPA 实体(10 个)│ ├── enums/ # 枚举(3 个)│ ├── repository/ # Spring Data JPA(9 个)│ ├── service/ # 业务逻辑(9 个)│ ├── dto/request/ # 请求 DTO(7 个)│ ├── dto/response/ # 响应 DTO(8 个)│ └── common/ # Result, PageResult, BusinessException, GlobalExceptionHandler├── src/main/resources/│ ├── application.yml # 主配置│ ├── application-dev.yml # 开发环境│ ├── application-prod.yml # 生产环境│ └── db/migration/│ ├── V1__init_schema.sql # Flyway 建表迁移│ └── V2__init_data.sql # Flyway 初始数据迁移├── frontend/ # Vue 3 前端│ ├── src/views/ # 页面(8 个)│ ├── src/components/ # 组件(4 个)│ ├── src/api/ # API 封装│ ├── src/router/ # 路由配置│ ├── src/utils/ # 工具函数(auth)│ └── src/assets/ # 全局样式└── deploy/ # 部署脚本 ├── deploy.sh # 一键部署 ├── init-db.sh # 数据库初始化 ├── devcamp-showcase.conf # Nginx 配置 ├── devcamp-showcase.service # systemd 服务 ├── build-frontend.sh # 前端构建脚本 ├── build-backend.sh # 后端构建脚本 └── README.md # 部署详细文档```写在最后感谢华为给予我们这么一次宝贵的机会尝试利用码道开发。我们将会继续积累实战经验,期待将来带来更好的作品。
-
一、概述1.1 案例介绍AI Shell 是智能 AI 命令行工具,以自然语言驱动终端操作,无需熟记复杂指令,大幅降低使用门槛,一站式完成华为云资源查询、操作、运维工作,让终端操作更高效、更智能。让华为云更好用、更易用。在个人开发者、小型团队和训练营学习场景中,云资源管理经常遇到一个很现实的问题:资源创建之后,如何持续确认它是否命名规范、标签完整、生命周期清晰、没有长期闲置或公开访问风险?如果每次都依赖人工进入控制台逐项查看,效率低,也容易遗漏。企业级云治理平台能力完整,但对于个人开发者或活动案例来说,又容易引入较多付费资源和配置成本。本案例使用华为云 AI Shell 辅助设计并生成一个“零成本云资源体检助手”。该工具通过 inventory.json 模拟资源清单,通过 rules.yaml 定义检查规则,使用 Python 完成命名规范、标签合规、过期时间、闲置资源和公开访问检查,最终输出 Markdown 与 JSON 两种报告。完成本地验证后,再部署到 FunctionGraph 事件函数中运行,形成一条完整的云端实践链路。本案例最终实现了以下目标:通过 AI Shell 自然语言交互完成方案设计、代码生成、项目修正和部署记录整理。使用 GitCode 托管完整项目,代码和配置可复现。使用 FunctionGraph 运行巡检逻辑,不购买服务器。使用本地模拟资源清单,不调用真实云 API,不配置 AK/SK。通过函数返回值和日志输出报告,不使用外部存储或消息服务。对公开仓库中的报告和资源清单提供脱敏版本,方便案例公开传播。1.2 适用对象企业个人开发者高校学生1.3 案例时间本案例总时长预计60分钟。1.4 资源总览资源名称规格单价(元)AI Shell体验版免费FunctionGraph函数每月前100万次调用免费免费华为云资源模拟免费二、AI Shell 使用指导2.1 获取访问秘钥AK 是Access Key(访问密钥)的缩写, 用于标识用户身份的唯一 ID, 通常公开传输。SK 是Secret Key(秘密密钥)的缩写,用于生成请求签名的保密密钥,仅用户和服务端持有。其核心功能是通过对称加密机制验证请求发送者的合法性,防止未授权访问。备注:如果已有访问密钥,本步骤可以忽略。2.2 登录进入 AI Shell 环境登录进入开发者空间官网,从侧边栏快捷入口一键拉起 AI Shell。同意华为云开发者服务协议、隐私声明及开发平台协议。同意将临时访问凭据(AK/SK)同步至 AI Shell 环境,免手动配置直接使用。进入 AI Shell。三、AI Shell 案例实战指导活动名称:【案例共创】【第12期】基于华为云AI Shell完成云资源管理、云服务运维和应用部署案例方向:云资源管理、云服务运维、应用部署代码仓库:https://gitcode.com/N9_xx/AIShell_CloudHealthChecker演示环境:华为云 AI Shell、GitCode、FunctionGraph 函数工作流成本说明:本案例严格采用零付费架构,仅使用 AI Shell 辅助生成、GitCode 代码托管、FunctionGraph 免费额度内运行、本地 JSON/YAML 配置文件和函数日志/返回值。不使用 OBS、SMN、API Gateway、ECS、RDS、AK/SK、云 API、公网带宽或任何需要购买的云资源。1. 场景痛点云资源治理并不只属于大型企业。个人开发者和小团队同样会遇到以下问题:痛点典型表现影响资源命名不统一demo、test-app-server 等名称缺少环境和业务语义后续定位资源和排障困难标签缺失没有 owner、environment、cost-center、project 等标签无法明确负责人、环境和成本归属临时资源长期保留测试资源没有过期时间或长期未使用容易产生配额占用和潜在费用风险运维检查依赖人工需要手动进入多个控制台页面查看效率低、不可复用、容易遗漏新手担心误用付费资源不清楚哪些服务会产生费用降低实践意愿因此,本案例的设计原则是:用最小资源完成可复现的云资源巡检闭环。即使不购买 ECS、RDS、OBS 等资源,也可以通过模拟清单和规则引擎,把云资源治理的关键方法跑通。2. 方案架构整体架构如下:flowchart LR A["开发者"] --> B["AI Shell"] B --> C["生成和修正项目代码"] C --> D["GitCode 仓库"] D --> E["FunctionGraph 事件函数"] E --> F["inventory.json 模拟资源清单"] E --> G["rules.yaml 检查规则"] E --> H["巡检引擎 inspector.py"] H --> I["命名/标签/过期/闲置/公开访问检查"] I --> J["Markdown/JSON 报告"] J --> K["函数返回值和日志输出"] 为了保证零付费,本案例在 AI Shell 中明确要求不使用 OBS、SMN、API Gateway、ECS、RDS、AK/SK 和云 API,最终方案仅保留本地文件、Python 逻辑、GitCode 和 FunctionGraph 免费额度。方案中各模块职责如下:模块作用AI Shell负责方案设计、项目结构生成、代码生成、部署步骤整理GitCode托管项目源码、配置文件、脱敏示例和 READMEFunctionGraph承载 Python 巡检逻辑,作为 Serverless 执行环境inventory.json模拟云资源清单,不调用真实云 APIrules.yaml定义命名、标签、过期、闲置、公开访问等检查规则src/checkers/具体检查器模块src/reporters/Markdown 和 JSON 报告生成模块函数返回值/日志输出巡检结果,不依赖外部存储和通知服务3. 技术选型技术或服务选择原因AI Shell支持自然语言描述需求,能够快速生成方案、代码和部署建议GitCode满足活动对代码仓库的要求,便于公开复现FunctionGraphServerless 运行环境,按需执行,免费额度足够覆盖本案例Python 3.9语法清晰,适合编写规则检查、报告生成等脚本JSON/YAMLJSON 适合描述资源清单,YAML 适合维护可读的检查规则Markdown/JSON 报告Markdown 便于阅读和投稿,JSON 便于后续自动化处理4. 前提条件已注册并完成实名认证的华为云账号。已进入华为云 AI Shell 云端作业环境。已创建 GitCode 仓库。已开通 FunctionGraph 函数工作流并能创建事件函数。本案例不需要购买 ECS、RDS、OBS、SMN、API Gateway、公网带宽等资源。5. AI Shell 生成项目我首先向 AI Shell 描述目标:设计一个零成本云资源体检助手,使用 AI Shell 辅助生成、GitCode 托管、FunctionGraph 运行,并要求不购买任何付费资源。请帮我设计一个零成本云资源体检助手。 要求: 1. 使用华为云 AI Shell 辅助生成方案和代码; 2. 使用 FunctionGraph 运行巡检任务; 3. 不购买 ECS、RDS、数据库、付费存储或公网带宽; 4. 使用 Python 实现; 5. 通过 inventory.json 模拟资源清单; 6. 通过 rules.yaml 定义命名、标签、过期时间、闲置和公开访问检查规则; 7. 输出 Markdown 和 JSON 两种报告; 8. 给出 GitCode 仓库目录结构。AI Shell 根据该约束生成项目目录和代码,并明确标注方案不使用付费服务。6. 项目结构AI Shell 最终生成的项目结构如下:cloud-health-checker/ ├── config/ │ ├── inventory.json # 模拟资源清单 │ ├── inventory.json.redacted # 公开投稿使用的脱敏清单 │ └── rules.yaml # 检查规则配置 ├── deploy/ │ └── functiongraph.yaml # FunctionGraph 部署说明 ├── output/ │ └── report.md.redacted # 脱敏版报告 ├── src/ │ ├── main.py # FunctionGraph 入口/本地运行入口 │ ├── inspector.py # 巡检引擎 │ ├── config_loader.py # 配置加载 │ ├── checkers/ │ │ ├── naming_checker.py # 命名规范检查 │ │ ├── tag_checker.py # 标签合规检查 │ │ ├── expiry_checker.py # 过期时间检查 │ │ ├── idle_checker.py # 闲置资源检查 │ │ └── public_access_checker.py# 公开访问检查 │ └── reporters/ │ ├── markdown_reporter.py # Markdown 报告 │ └── json_reporter.py # JSON 报告 ├── requirements.txt └── README.md进入项目目录后,AI Shell 给出了本地运行和查看报告的命令。7. 规则设计规则文件 config/rules.yaml 定义了五类检查:检查类型说明命名规范检查按资源类型匹配命名规则,例如 ECS 使用 env-project-service-index标签合规检查检查 owner、environment、cost-center、project 等标签过期时间检查检查资源是否已过期或即将到期闲置资源检查根据 CPU、网络流量、绑定状态等模拟字段判断闲置公开访问检查检查安全组、访问来源等公开暴露风险部分规则示例如下:naming: enabled: true severity: warning rules: ecs: pattern: "^(prod|test|dev|staging)-[a-z0-9-]+-[a-z0-9-]+-[0-9]+$" example: "prod-web-frontend-01" description: "ECS 命名格式: env-project-service-index" tags: enabled: true severity: warning required_tags: - key: "owner" description: "资源负责人" - key: "environment" description: "环境标识" allowed_values: ["production", "test", "development", "staging"] expiry: enabled: true severity: critical这套规则的优势是可配置。后续如果团队命名规范或标签规范变化,只需要修改 rules.yaml,不用改检查器代码。8. 模拟资源清单与脱敏处理本案例使用 config/inventory.json 作为模拟资源清单,不调用真实云 API。清单中包含 ECS、VPC、OBS、RDS、安全组、EIP、ELB 等资源类型的模拟字段,用于验证不同检查器的能力。由于案例需要公开投稿,AI Shell 同时检查了资源清单和报告中的敏感信息,并生成脱敏版本:文件说明config/inventory.json项目运行使用的模拟资源清单config/inventory.json.redacted公开展示使用的脱敏清单output/report.md.redacted公开展示使用的脱敏报告脱敏处理保留资源类型、风险类型、检查结果,不展示账号 ID、真实资源 ID、手机号、访问地址等敏感信息。9. 核心代码实现FunctionGraph 入口和本地运行入口都在 src/main.py。核心函数为 handler(event, context),它会调用巡检引擎 run_inspection(),并将 Markdown 和 JSON 报告放入返回值。def handler(event=None, context=None): print("[INFO] FunctionGraph 函数开始执行") try: result = run_inspection() response = { "statusCode": 200, "body": { "message": "巡检完成", "duration_seconds": result["duration_seconds"], "reports": { "markdown": result["markdown"], "json": result["json"], }, }, } print("[INFO] FunctionGraph 函数执行成功") return response except Exception as e: print(f"[ERROR] 巡检执行失败: {e}") return { "statusCode": 500, "body": { "message": f"巡检执行失败: {e}", "error_type": type(e).__name__, }, } 各检查器被拆分到 src/checkers/ 目录中,报告生成器被拆分到 src/reporters/ 目录中。这样做的好处是:每类检查规则可以独立维护,未来可以继续扩展“配额风险检查”“配置漂移检查”“成本归属检查”等模块。10. 本地运行验证在 AI Shell 中进入项目目录后,执行:cd /root/cloud-health-checker python src/main.py巡检成功后,控制台输出检查摘要,并生成 output/report.md 和 output/report.json。本次模拟资源清单中共有 18 个资源对象。由于每个资源会被多类检查器检查,最终检查资源总数为 90,发现问题总数为 38,其中严重问题 3 个,警告问题 35 个。关键结果如下:指标数量检查资源总数90发现问题总数38Critical3Warning35命名规范问题8标签合规问题12过期时间问题10闲置资源问题8公开访问问题0其中公开访问检查 18/18 通过,说明示例清单没有公开访问风险;其他问题集中在命名、标签、过期时间和闲置资源上,符合资源治理场景中的常见问题分布。11. GitCode 托管本地运行成功后,我将项目推送到 GitCode 仓库:https://gitcode.com/N9_xx/AIShell_CloudHealthChecker仓库中包含源码、配置、部署说明、脱敏清单和脱敏报告,方便评审和开发者复现。推送后,AI Shell 输出的提交信息如下:项目内容提交 ID2a5c916分支main提交信息init zero-cost cloud health checker文件数22 个文件12. 部署到 FunctionGraph在 FunctionGraph 控制台中创建事件函数:配置项值函数名称cloud-health-checker区域华北-北京四 cn-north-4函数类型事件函数运行时Python 3.9委托未使用任何委托内存256 MB超时60 秒这里需要注意,函数名称和 Handler 不是同一个概念。函数名称使用 cloud-health-checker。Handler 根据实际上传包结构填写:本次 FunctionGraph 测试使用的入口为 main.handler,测试成功;如果保持仓库原始 src/ 目录结构上传,则入口可参考 deploy/functiongraph.yaml 中的 src.main.handler。本案例最终以手动测试方式验证函数,不配置定时触发器,避免引入额外资源操作。后续如需扩展为每日巡检,可在 FunctionGraph 中增加 TIMER 触发器。13. FunctionGraph 测试结果创建函数后,使用空 JSON 事件进行同步调用测试:{} 函数返回 statusCode: 200,返回体中包含 message: 巡检完成,并返回 Markdown 与 JSON 两种报告。本次 FunctionGraph 测试统计如下:指标数值检查资源90发现问题38严重问题3警告问题35执行耗时约 0.07 秒报告输出方式包括两种:函数返回值:Markdown 和 JSON 结构直接包含在响应 body.reports 中。控制台日志:巡检过程输出到 FunctionGraph 标准日志。14. 零成本架构验证本案例部署和测试过程中未使用以下资源:资源类型使用情况OBS 对象存储未使用,报告通过函数返回值和日志输出SMN 消息通知未使用,不发送告警通知API Gateway未使用,通过手动测试或 TIMER 触发ECS/RDS 等计算或数据库资源未使用,纯 Serverless 运行公网带宽/EIP未使用AK/SK 凭据未使用,不调用真实云 API云 API 调用未使用,基于本地模拟资源清单巡检巡检数据来自项目内置的 inventory.json 模拟资源清单,检查规则来自 rules.yaml。所有逻辑都在函数运行时内完成,不需要外部依赖服务来存储报告或转发通知。15. 案例效果本案例完成后,开发者可以获得一个可复现的云资源体检工具:修改 inventory.json 即可调整被检查资源。修改 rules.yaml 即可调整治理规则。本地执行 python src/main.py 可快速验证。上传到 FunctionGraph 后,可以通过手动测试验证函数运行。后续可配置 TIMER 触发器,实现周期性巡检。脱敏版报告摘要如下:# 云资源体检报告(脱敏版) ## 汇总信息 - 检查资源总数:90 - 发现问题总数:38 ### 问题分布(按严重程度) | 严重程度 | 数量 | |----------|------| | warning | 35 | | critical | 3 | ### 问题分布(按检查类型) | 检查类型 | 数量 | |----------|------| | naming | 8 | | tags | 12 | | expiry | 10 | | idle | 8 | 16. 遇到的问题与解决。16.1 FunctionGraph 函数名称和 Handler 容易混淆创建函数时,函数名称应填写 cloud-health-checker,不能填写 src.main.handler。Handler 是代码入口,需要在函数代码配置中填写。根据上传包结构不同,入口可能是 main.handler 或 src.main.handler。本次手动测试使用 main.handler 成功。16.2 公开投稿需要脱敏虽然本案例使用模拟资源清单,但其中仍可能包含类似账号 ID、资源 ID、IP、负责人等字段。投稿前使用 AI Shell 检查并生成脱敏版本,保留风险类型和检查结果,避免公开敏感信息。17. 扩展方向在保持低成本和安全边界的前提下,后续可以继续扩展:增加更多资源类型的规则,例如 CCE、DCS、LTS 等。增加资源配置漂移检查,比较当前清单和基线清单差异。增加团队级规则模板,不同项目使用不同 rules.yaml。在 FunctionGraph 中配置 TIMER 触发器,实现每天自动巡检。在不引入付费资源的前提下,将报告输出到函数日志,由人工或后续流程查看。如果用于真实生产环境,应优先使用只读权限,并在充分评估费用与安全边界后,再考虑接入真实云 API。18. 案例总结本案例基于 AI Shell、GitCode 和 FunctionGraph,完成了一个严格零付费的云资源体检助手。它不依赖真实云 API,不配置 AK/SK,不购买服务器和数据库,仅通过本地模拟清单和规则文件完成资源治理实践。从实践过程看,AI Shell 的价值不仅在于生成代码,也在于帮助开发者不断收敛方案边界:当初始方案包含可能引入计费或权限复杂度的服务时,可以通过明确约束,让 AI Shell 重新设计为更符合活动要求的架构。FunctionGraph 则提供了一个轻量的 Serverless 执行环境,使巡检逻辑可以从本地脚本进一步部署为云端函数。最终,本案例形成了完整闭环:AI Shell 生成方案和代码,GitCode 托管项目,FunctionGraph 部署运行,函数返回值和日志输出报告。这条链路既满足活动对实践完整性的要求,也能为开发者提供一套可复用的云资源治理思路。19. 参考链接GitCode 项目仓库:https://gitcode.com/N9_xx/AIShell_CloudHealthChecker活动链接:https://bbs.huaweicloud.com/forum/thread-0212721816590407924-1-1.html【案例共创】【第12期】基于华为云AI Shell完成云资源管理、云服务运维和应用部署https://bbs.huaweicloud.com/forum/thread-0212721816590407924-1-1.html
-
向大佬们请教一下38期的交互逻辑,我目前交互逻辑的大概实现如下(线上测试一直-1 run timeout):#include <algorithm> #include <cstdio> int N, K, B; int gpuCapacity[100]; int main() { scanf("%d %d %d", &N, &K, &B); for (int i = 1; i <= K; i++) { scanf("%d", &gpuCapacity[i]); } int requestCnt = 0; int tMax = 0; int curTimeStep = 0; int maxArrivalTime = 0; int requestLoutSum = 0; // 当requestCnt == N && curTimeStep > tMax时,结束循环 while (requestCnt < N || curTimeStep <= tMax) { int t, n; scanf("%d %d", &t, &n); for (int i = 0; i < n; i++) { int id, lIn, lOut, arrivalTime; scanf("%d %d %d %d", &id, &lIn, &lOut, &arrivalTime); requestCnt++; requestLoutSum += lOut; maxArrivalTime = std::max(maxArrivalTime, arrivalTime); if (requestCnt == N) { tMax = maxArrivalTime + requestLoutSum; } } curTimeStep++; // 直接输出0,按文档中说明,达到tMax时没有收到N个request的Scheduling应该是0分 printf("0\n"); fflush(stdout); } // fprintf(stderr, "tMax: %d, curTimeStep: %d, requestCnt: %d\n", tMax, curTimeStep, requestCnt); return 0; } 1. 程序全部输出0,按文档的说明,当t > t_max时,如果没有收到N个request的Scheduling,得分应该是0,但线上测试反馈是-1 run timeout,所以我猜测是交互器超时了。(当然,实际的算法会考虑Scheduled request的数量)2. 本地我使用AI写了一个评测程序,构造了一个测试用例,只包含一个Request,且该Request在4096000时刻才到达,测试用了大概90s,所以我猜测我的交互逻辑应该有问题。
-
使用AI Agent自动发布文章到华为云论坛本文介绍如何使用AI Agent和自动化脚本,实现一键发布文章到华为云论坛的技术方案概述随着AI技术的发展,自动化内容发布已成为提高工作效率的重要手段。本文将详细介绍如何通过AI Agent结合Playwright自动化工具,实现华为云论坛文章的全自动发布流程。技术架构核心组件Playwright自动化框架基于Chrome DevTools Protocol (CDP)连接支持现代Web应用交互跨平台兼容性华为云论坛SPA应用Vue.js前端框架TinyMCE富文本编辑器自定义级联选择器组件CDP连接模式连接已登录的Chrome浏览器避免反自动化检测支持扫码登录工作流程# 华为云论坛自动发布流程1. 启动Chrome浏览器(带远程调试端口)2. 用户手动扫码登录华为云3. AI Agent通过CDP连接到已登录浏览器4. 导航到发帖页面(/forum/topicpost)5. 选择版块(产品和服务/开发者空间)6. 选择分类(技术干货)7. 填写文章标题8. 将Markdown转换为HTML并填充到编辑器9. 选择创作类型为"原创"10. 添加相关标签11. 点击发布按钮12. 验证发布结果关键技术细节1. 级联选择器操作华为云论坛使用Vue.js自定义的级联选择器组件,需要特殊处理:// 版块选择器操作const triggers = document.querySelectorAll('.cascader-block.tiny-popover__reference');for (const t of triggers) { const p = t.querySelector('.my-cascader-placehodler'); if (p && p.innerText.includes('版块')) { t.click(); break; }}2. TinyMCE编辑器内容填充论坛使用TinyMCE富文本编辑器,需要通过JavaScript API设置内容:if (typeof tinymce !== 'undefined' && tinymce.activeEditor) { tinymce.activeEditor.setContent(html_content);}3. 标签组件交互标签输入使用自定义组件,需要模拟真实用户的输入行为:# 正确的标签输入方式tag_input = page.locator('.input-label')await tag_input.click()await tag_input.type('运维', delay=80) # 慢速输入触发Vue响应式await tag_input.press('Enter')部署与使用ARM64环境适配在ARM64 Ubuntu系统上,使用Chromium替代Chrome:# 安装Chromiumsudo snap install chromium# 启动带CDP的ChromiumDISPLAY=:1 /snap/chromium/current/usr/lib/chromium-browser/chrome \ --no-sandbox --disable-gpu --disable-dev-shm-usage \ --remote-debugging-port=9222 \ --user-data-dir=/home/developer/.config/chromium-forum执行脚本# 使用CDP模式(推荐)python scripts/publish_cdp.py \ --cdp-url http://localhost:9222 \ --title "使用AI Agent自动发布文章到华为云论坛" \ --content huawei_forum_article.md \ --board "产品和服务/开发者空间" \ --category "技术干货" \ --tags "AI,自动化,华为云,论坛"优势与价值效率提升节省手动操作时间90%以上避免重复性表单填写支持批量发布技术优势绕过反自动化检测支持扫码登录完整的错误处理机制详细的日志记录应用场景技术博客同步:将本地Markdown文章自动发布到论坛内容运营:定期发布技术文章和教程社区管理:自动化管理论坛内容知识库同步:保持多个平台内容一致性总结通过AI Agent与自动化技术的结合,我们实现了华为云论坛文章发布的完整自动化流程。该方案不仅提高了工作效率,还确保了发布质量,为技术内容创作者提供了强大的工具支持。未来可以进一步扩展功能,如图片上传、格式优化、多平台同步等,打造更完善的自动化内容发布生态系统。标签建议: AI, 自动化, 华为云, 论坛, 技术分享
-
我测试了两份代码A和B,B比A多了一个函数的声明和定义,但是该函数完全没有被调用,结果A是success,B是run timeout(本地都编译通过且测试过)。两个代码都是使用最简单的贪心,单个Job算法复杂度都是O(M*F*P),其中M为phase数,F为flow数量,P为spine的数量,正常情况下不可能超时的。之前尝试过更复杂的算法都没超时,最高有36500w+,,为啥多个函数的声明和定义就超时了?
-
为什么提交后显示结果Main file not found.
-
会对练习赛代码进行判重吗?很多人交过demo,这个估计一模一样
-
用 C++ 编译器编译 C 代码会导致部分标准 C 语法编译报错,如 C 中的 malloc 的默认类型转换、柔性数组等。既然评测脚本中已经用后缀名区分了提交语言,能否用gcc编译c文件?如gcc -std=c11 Solution.c -o Solution -O2 -lpthread
-
2026 年 1 月 9 日下午,南京大学仙林校区举办 “卓越工程师文化大讲堂” 活动。华为公司 Fellow、华为云首席架构师顾炯炯先生受邀担任主讲嘉宾,南京大学卓越工程师学院副院长瞿晓磊、计算机学院副院长谢磊、华为云学堂总经理唐国军、华为云高校生态总监罗静、华为云高校生态运营专家蒋晓颖等嘉宾出席活动,与现场师生及行业专家共同畅享这场聚焦科技突破与产业发展的思想盛宴。初心筑基:一线历练铸就技术底色顾炯炯先生以个人职业历程为开篇,将 27 年行业深耕划分为成长起步、电信突围、云端亮剑、决胜 AI 时代及架构师心法五个核心篇章,串联起中国信息产业从跟随到并跑再到领跑的演进轨迹。1998年加入华为,从无线产品线软件工程师起步。面对通信协议与自身技术栈的巨大跨度挑战,他啃透上千页英文协议文档,成为项目组公认的 “活字典”;在国外参与设备入网测试时,他带领团队连夜排查跨模块问题,实现从信令交互到底层线路平台的全链路打通。这段 “亲历一线倒逼成长” 的经历,不仅锤炼了他的系统思维,更让对质量的敬畏与拼搏精神深植于心,为后续技术突围埋下伏笔。电信突围:架构创新改写市场格局2000年初,电信行业迎来从程控交换向软交换的代际变革。顾炯炯先生摒弃传统架构反向兼容的妥协路线,创新性采用 “承载控制” 分离架构与业务能力继承设计,既保障了 IP 化技术的先进性,又延续了交换机时代积累的号码分析、呼叫路由等核心资产。他强调,商业成功的核心不仅在于功能创新,更在于对可靠性、性能等非功能指标的极致打磨。云端亮剑:全栈革新构筑云底座优势2010 年前后,华为启动云计算战略,面临 “从电信设备商向 IT 服务商” 的基因跨越。作为核心架构师,顾炯炯先生主导多项颠覆式架构创新:采用业界开源技术打造了灵活扩展的云平台,能够支撑超大规模计算场景;在网络与存储等关键领域,通过软件定义和自主创新,实现了快速迭代与可靠数据存储;并通过软硬件协同与统一架构设计,提升了算力效率,有力支撑了在混合云市场的领先地位。AI 决胜:架构升维领跑智能时代面对 Agentic AI革新浪潮所带来的巨大冲击,特别是以紧耦合、高通量为关键特征的大模型训推任务及智能体应用等全新云上应用负载所提出的全新挑战,华为云技术团队通过软硬件协同创新,提升了人工智能计算的效率和性价比。同时,重新设计了云端资源调度与网络架构,有效优化了资源利用率并确保了网络的高可靠性。这些努力共同构建了一个高效、稳定、并能覆盖云边端场景的智能计算与协作网络基础。心法传承:思维跃迁点亮成长之路分享中,顾炯炯先生提炼出职业生涯的四次关键思维跃迁:从关注代码实现的工程师,转向聚焦交付与价值的项目经理;从深耕技术细节到拓宽产业标准前沿视野;从锤炼系统架构设计能力到掌握技术突围方法论;最终升维为产业架构师,以全栈创新定义未来。他阐释架构本质是 “面向目标系统的、基于工程科学的艺术化决策”,并总结了多年来积累的几点心法体会:保持 “空杯心态” 清零过往成功经验,持续学习新范式;运用 “终局思维” 从未来预期业务目标倒推当下技术路径;秉持 “创新思维” 敢于挑战既定模式、探索无人区。面对 AI Native 时代,他指出架构师核心关注对象已从硬件、软件转向模型与智能体,需进化为 “软硬全栈协同设计者” 与 “技术哲学家 + 工程指挥官”。问答环节,谢磊副院长及现场师生围绕持续创新路径、AI 时代云计算发展趋势等话题踊跃提问,顾炯炯先生逐一细致解答,引发全场对技术突破与职业规划的深层思考。 本次大讲堂深度融合个人成长叙事与产业发展宏观视角,既复盘了关键技术突破的实战经验,又为青年工程师提供了清晰的成长坐标系。顾炯炯先生用 “坐冷板凳” 的扎实功底、“跨边界” 的广阔视野与 “破旧局” 的创新勇气,诠释了卓越工程师的核心素养。活动不仅为南京大学师生及行业从业者注入了深耕技术、赋能产业的强大动力,更为构筑产业核心竞争力提供了宝贵借鉴。
-
华为开发者大赛优秀项目2024华为开发者大赛·学生赛道 全国总决赛银奖项目一、团队介绍-梅科尔工作室:本团队隶属于郑州轻工业大学梅科尔工作室,成立于2013年,是一支以技术创新为核心驱动力的产学研结合团队,由李一浩老师带领学生开发者共同组建,拥有8名教师与学生华为开发者布道师,涵盖昇腾、昇思、海思、鸿蒙、华为云等多种方向,成立优选级华为ICT学院及中原人工智能ICT协同中心。工作室自成立以来,工作室始终秉持"技术赋能社会"的核心理念,专注于人工智能、大数据、物联网等前沿技术的研发与应用。采用"导师引领+学生主导"的协作模式,构建起高效灵活的研发体系,已累计汇聚2万余名跨学科人才,成员专业背景涵盖机械工程、电气工程、艺术设计、生物科学、化学工程、食品工程、计算机技术及工商管理等多个领域,目前研究方向覆盖医疗器械、软体机器人、五轴数控机床装备研发、3D打印、人工智能、机器人技术、大数据分析、物联网应用及新能源开发等前沿科技领。慧眼柔巡-基于昇腾AI的多场景线缆异常检测系统二、获奖作品简介:团队依托高校的创新创业平台及其丰富的资源,致力于向社会提供一种用于地下线路全自动化巡检一站式解决方案,立足于与一线研发人员强强联合,着眼于技术创新,建立具有独立自主知识产权和具有较强竞争力的产学研体系。目前,团队计划与国家电网、城市管理局等具有市场推广能力和资源的组织机构达成战略合作意识。其中,核心产品折纸式地下线缆巡检软体机器人是由创始团队自主研发的,团队对其有完全自主的知识产权保护。仿生式地下线缆巡检机器人的核心技术已经拥有了一项实用新型专利和两项软件著作权,未来将计划申请更多的专利对产品进行知识产权保护。产品见下图:设备控制箱(图a)、自研星闪遥控器(图b)、软体机器人(图c)(a)(b)(c)三、背景及行业痛点:传统的地下线路巡检工作通常为人工巡检。人工巡检可以大致总结为两类方式:第一种是将线缆直接从窨井盖拖出地面,在地面进行人工检修后,再放回原位,然而这种方式却容易造成线缆的二次损伤;第二种方式是检修工人进入地下管道内部进行线缆巡检工作,然而这种方式对巡检工人的身材有着特殊要求且工作环境极为恶劣。综上所述,传统线路巡检工作具有作业周期长、工作量大、费时费力,效率低,漏检率和错检率高等缺点。由此可见,传统的人工巡检的方式不能满足现有巡检体系的需要。目前,市面上的线路巡检系统的机器人主要为轮式和轨式机器人,均是刚性结构。这类机器人通常体积较大、难以实现轻便的多自由度动作,难以适应复杂的地下空间。四、技术创新:团队结合自身的软体机器人研究领域,基于华为云全栈生态技术能力,针对上述的问题,提出了利用科技针对线路巡检行业痛点的一站式解决方案(实地运行见图d),帮助相关部门减少巡检成本,提高巡检效率。(d)核心技术点:基于昇思MindYOLO快速构建线缆破损检测算法开发实现MindYOLO是一个基于MindSpore框架实现的YOLO系列算法开源项目,不仅提供了对当前最先进的YOLO系列算法的支持,还通过MindSpore的高效计算能力,使得这些算法在各种硬件平台上都能获得卓越的性能表现,为研究人员和开发者提供一个灵活、高效的工具,实现在实时目标检测领域进行创新和研究。1.环境搭建:有“PyPI源安装”和“源码安装”两种方式及,本算法采用PyPI源安装形式,安装mindyolo与mindspore包2.案例代码获取:在完成环境搭建后,从官网获取mindyolo整理好的源码:https://gitcode.com/gh_mirrors/mi/mindyolo/tree/master;然后下载模型预训练文件:cid:link_0。3.案例运行:将预训练模型文件放置于mindyolo主目录下,进入/config文件夹中,选择对应yolo版本的yaml文件,如yolov7-tiny.yaml,可修改测试数据集等的各类配置。运行代码python test.py --config <yaml文件路径> --weight <model路径>即可完成案例体验4.算法开发:在进行项目算法开发时,需要经过数据集调整及网络微调两部分。①数据集调整:mindyolo同时适配了传统的yolo算法的数据集输入,准备数据集时,仅需保证数据集格式为Yolo格式+coco格式的评估集(如图e),在/config目录下的coco.yaml文件中进行修改地址和标签即可(如图f)(e)(f)②网络调整:针对项目算法所需类型,进行网络层调整,如当传统mindyolo算法在部分复杂检测较差时,可以插入注意力机制。当需要修改算法网络时,只需将所需要添加或删除的层在上述对应yolo版本的yaml文件修改即可,其中包括有锚框(anchors)、骨干网络(backbone)、检测头(head)等(如图g)。有关深度学习、昇思及算法网络微调知识也可前往华为云开发者空间进行学习,点击前往:开发者空间-华为云(g)5.模型训练:修改完成全部数据集及网络后,输入代码python train.py –config <yaml文件地址> --weight <预训练权重地址>--epoch 50 --run_eval=False即可开始训练,训练完成后可获取模型ckpt权重文件,按照上述步骤③的流程便可完成测试与部署操作。该模型训练时,也可基于华为云主机进行整体算法操作。本产品算法效果见实时运行情况(图h)及理结果情况(图i)。(h)(i)五、关注我们
-
金秋送爽,学术氛围盎然。2025年10月28日下午,广西电力职业技术学院五象新区图文信息楼506教室座无虚席,一场以“华为开发者空间助力校园开发者”为主题的专题宣讲会在此成功举行,吸引了来自全校各专业约100名怀揣技术梦想的学子齐聚一堂,共同探寻人工智能技术的奥秘与未来。本次活动特邀华为HDE(Huawei Developer Expert)专家陈老师担任主讲,为在场同学带来了一场长达两小时、内容翔实且极具启发性的技术盛宴。 前沿技术触手可及,开发者生态全面揭晓宣讲会伊始,陈专家以当前波澜壮阔的人工智能浪潮为引,阐述了掌握先进开发工具与平台对于当代大学生,特别是工科学子的重要意义。他指出,在AI技术日益渗透到千行百业的今天,开发者们正站在时代的风口,而一个强大、开放且友好的开发平台将成为个人能力跃升的关键助推器。陈老师系统性地揭开了华为开发者空间的神秘面纱。他介绍道,华为开发者空间并非一个单一的工具,而是一个整合了“算力、框架、模型、应用”的全栈式开发生态系统。这个生态的核心,在于它无缝集成了包括昇腾(Ascend)AI处理器、鸿蒙(HarmonyOS)操作系统、鲲鹏(Kunpeng)处理器、GaussDB数据库以及欧拉(openEuler)操作系统在内的全栈自主创新技术。陈专家强调,这种“软硬芯云”协同优化的架构,能够为开发者提供远超传统模式的极致性能与开发效率。为了让同学们能够无负担地接触并运用这些顶尖技术,陈专家着重介绍了平台为全球开发者提供的“八大免费权益”。这八大权益如同八把开启宝库的钥匙,涵盖了云开发环境、AI Notebook交互式编程、函数计算(FunctionGraph)、云手机、数据库实例等多个层面。“这意味着,”陈老师生动地比喻道,“每一位同学,从今天起,就拥有了一个随时在线、功能齐全的‘云端超级实验室’。你无需购买昂贵的硬件设备,也不再受限于本地环境的配置困扰,只要有创意、有想法,就能立刻在云端付诸实践。” 场景化深度解析,实战应用惊艳全场在奠定了坚实的理论认知基础后,宣讲会进入了最为引人入胜的环节——多场景应用实战解析。陈专家摒弃了枯燥的技术术语堆砌,转而以一个个生动的开发场景和实际案例,将抽象的技术能力转化为具体可感的解决方案。在鲲鹏应用迁移与开发场景中,他演示了如何将原本运行在x86环境下的应用,平滑、高效地迁移至鲲鹏算力平台,并讲解了如何进行深度调优以发挥其极致性能。这对于同学们理解国产化软硬件生态及其应用前景具有重要启蒙意义。进入昇腾AI的奇妙世界时,现场气氛达到一个小高潮。陈专家详细展示了如何利用AI Notebook完成从数据预处理、模型训练、评估到部署的全流程。他特别提到了平台提供的百万级MaaS Token支持,这让大规模语言模型(LLM)的应用开发不再是大型科技公司的专利,在校学生同样可以基于此开展前沿的AI应用创新。对于即将上线的鸿蒙云手机服务,陈专家进行了前瞻性介绍。他表示,这将允许开发者在云端直接完成鸿蒙原生应用的安装、调试与测试,极大地降低了同学们接触和开发下一代操作系统应用的门槛。ModelArts Versatile与AI Agent的演示则充满了未来感。陈专家现场操作了如何通过简单的配置,一键构建具备特定能力的AI智能体(Agent),让机器能够理解复杂指令并自主完成系列任务,让同学们直观感受到了AI技术的前沿动态。FunctionGraph云函数对于轻量级服务与MCP Server的快速部署、Astro低代码平台如何通过可视化拖拽快速构建专业级应用、以及免费领取企业级GaussDB数据库实例进行数据管理等环节的讲解,都不断刷新着同学们对现代开发模式的认知。大家纷纷感叹,原来开发可以如此高效、如此智能。 激发创新潜能,构筑成才基石除了核心的技术与工具讲解,陈专家还向同学们展示了华为开发者生态中丰富的辅助资源。他引导大家浏览了平台上的“案例中心”,那里汇聚了来自各行各业的场景化解决方案示例,是绝佳的学习资料;介绍了基于云文档构建的学习型社区,鼓励大家在社区中提问、分享与成长;最后,他还预告了华为与各界合作举办的各类软件编程与创新竞赛,激励同学们以赛促学,在实战中锤炼真本领。整场宣讲会节奏紧凑、内容饱满,既有高屋建瓴的行业洞察,又有细致入微的操作指导。约50名参会同学全程聚精会神,在互动环节踊跃提问,与陈专家就技术细节、学习路径和职业规划进行了深入交流,现场气氛热烈而融洽。 本次“华为开发者空间助力校园开发者”专题宣讲会的成功举办,吸引了100多名开发者领取华为开发者空间,不仅为校园开发者搭建了一个与顶尖企业技术专家面对面交流的宝贵平台,更如同一座桥梁,将同学们在课堂上学到的基础理论与产业界最前沿的技术实践紧密连接起来。它成功地激发了同学们对于探索华为开发者生态、投身智能应用开发的巨大热情,有效地帮助大家在大学阶段明晰技术学习的方向与路径。我们坚信,这场活动播下的种子,必将为同学们未来在AI开发领域的深入实践与长远发展奠定坚实的基石,助力他们在数字化、智能化的时代浪潮中乘风破浪,成就梦想。
-
一、赛题理解与总体思路我们是本次华为“揭榜挂帅”赛道的“全都对队”,我们在本次比赛中取得了擂主奖项。在对赛题进行分析时,我们意识到,面对的是一项覆盖 训练—推理—算子级优化 的全流程性能挑战。赛题要求选手不仅能调优模型效果,更需深入昇腾 NPU 底层,对推理链路进行系统级重构。我们的判断是:只有从训练端减负、推理端提效、算子端深挖三个层面同时发力,才能在 NPU 上发挥出模型的极致性能。二、训推一体:从源头降低计算压力我们先从训练侧着手,目标是在不显著牺牲精度的前提下,减少模型在推理阶段的无效计算。SFT 阶段的输出规范化在 SFT 中,我们将 CoT(Chain-of-Thought)和最终答案严格约束为比赛指定格式,使模型从训练阶段就习惯于“结构化回答”。强化学习阶段加入长度惩罚在 RL 中,我们设计了带 长度惩罚项 的 Reward Function:冗余输出将触发指数级负奖励。这种训练策略促使模型自然收敛为“简洁表达”。实验显示:输出 Token 数量减少约 30%,有效降低了推理端的算力压力,同时保持了接近原精度。三、底层打磨:深度利用 CANN 软件栈在推理侧,我们利用 CANN 软件栈,对算子、图模式、内存等维度进行了深入优化。启用 torch.npu 图模式小 batch 推理时,算子下发的开销会显著影响吞吐。我们将 PyTorch 动态图编译为 NPU 静态计算图:原理: 将执行流固化,使编译器能够进行更激进的融合与调度优化。收益: 消除 Python Launch Overhead,并提升算子融合、内存复用效率。FFN 多算子融合我们基于 CANN 自定义算子,将 FFN 中若干线性变换与激活操作 融合为单一 Kernel,从而显著减少 NPU 显存 ↔ 计算单元之间的往返。四、架构级创新:推理吞吐的倍增策略在推理架构层,我们通过引入新技术与调整策略,突破了吞吐瓶颈。EAGLE 3 投机解码传统自回归逐 Token 解码速度受限。我们采用 EAGLE 3 架构:Draft Model 并行生成候选序列;大模型一次性并行验证。结果: 在不损失精度的前提下,解码速度提升约 1.5 倍。取消 Chunked Prefill(基于赛题场景的反直觉选择)行业内常用 Chunked Prefill 用于降低单次 Prefill 对延迟的影响,但它并不提高硬件利用率。在本次评测“侧重高吞吐、并行请求充足”的条件下,Prefill 拆分反而带来调度开销,降低整体 TPS。因此我们选择完全关闭 Chunked Prefill,吞吐量得到提升。KV Cache 前缀缓存 + 输入截断针对赛题大量重复 System Prompt,我们引入 Prefix Cache:相同前缀自动复用 KV Cache,免去重复计算。严格控制输入长度,避免少量长尾请求拖慢整个 Batch。五、效果验证与最终成绩通过“算法优化 → 架构创新 → 底层算子融合”的三级联动,我们实现了最终性能突破:吞吐性能: B 榜达到 707 tokens/s,排名第一。输出质量: 在严格格式约束下,模型保持精度且无冗余废话。关键经验:性能优化必须坚持 算法—系统—硬件协同设计(Co-Design),任何单一层面的调优都难以实现全局最优。结语技术优化永无止境。本次比赛中,感谢老师的指导、队友的投入,以及华为云成熟的算力基础与 CANN 生态。未来,我们将继续探索 NPU 推理优化的更多可能,为大模型的真实应用场景带来更高效的系统性能。
-
背景与挑战:web场景是互联网算力突破的广泛场景,主流开源web软件、框架已经支持了ARM生态。面向互联网web业务,鲲鹏如何相比X86构筑差异化竞争力,实现性价比的超越? 对于客户基于Nginx自建ELB典型场景,https短连接多、加解密CPU消耗占比高特征,是否存在软硬件协同优化手段和性能提升手段。 解决方案:以Nginx为例,核心的时延和吞吐在于https OpenSSL加解密过程。通过鲲鹏硬件实现加解密过程加速成为性能提升的关键路径。鲲鹏CPU从硬件设计角度内置硬件加解密单元KAE 云服务实例支持硬件KAE单元的虚拟化,支持kAE系列实例提供加解密关键能力。帮助客户自动完成启用kAE能力相关配置。该单元支持典型的加密算法: 云服务使能KAE license, 基于硬件SR-IOV虚拟化提供kAE系列实例。兼容OpenSSL标准接口,应用层调用无修改。 以Nginx为例,全栈加速能力如下: 业务效果1) 实测相比X86 CPU性能提升60%~70%。客户已广泛使用。2) 目前网络ELB服务已经全面配套鲲鹏kAE2实例,实现业务降本XX%。总结与展望: 鲲鹏算力需要结合细分场景、鲲鹏硬件优势、生态加速能力持续构筑差异化竞争力。在最大规模互联网场景上大胆进行系统取舍和业务创新。 在后摩尔定律,工艺红利、封装红利逐步消失。 面向领域的指令执行效率是未来提升性能和性价比的关键路径。kAE单元通知支持压缩、解压缩能力,面向大数据场景同样具备性能优势和收益。
-
使用官方提供的AI Notebook,遇到如图所示的root权限问题,请问应该怎么解决?
-
使用msOpGen生成的算子工程默认使用宏定义Tiling结构体,对应的build.sh脚本也是针对这种情况的。而如果使用C++定义Tiling结构体,tiling头文件需要放到op_kernel中,算子实现文件也会有一些变化,这时原本的build.sh就编译不了了,请问该怎么修改呢?
推荐直播
-
华为云码道Skill实战与极速交付,智能开发全链路实战2026/07/22 周三 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;姜浩-华为云HCDG核心组成员
直播深度解读华为云码道6月产品新特性,从Skill市场安装专家技能,带你零距离体验从需求,开发,审查,重构全链路闭环的开发过程。从零构建并交付一个完整项目,让您体验从代码提交到服务上线的“极速”之旅。
回顾中 -
聚开发者之力,创具身新未来2026/07/23 周四 15:00-17:00
张豪杰/程文/王军/刘新春/黄钦开 /张晓天
本次华为云具身智能开发平台CloudRobo培训面向具身智能开发者,带您全流程体验机器人本体R2C小时级接入、环境重建与轨迹生成仿真数据生产、PB级数据管理、数据评测、模型训推、强化学习和Benchmark一键评测等功能,并体验业界主流具身模型应用。
回顾中
热门标签