整理:强哥答疑
文章目录
学习方法
|
|
背景
vivo蓝河操作系统创新赛培训
vivo蓝河操作系统是面向通用人工智能时代自研的下一代智慧操作系统,创新性地使用Rust语言编写,基于 vivo蓝心大模型 的智慧赋能,实现了自主可控、先进、安全的智慧解决方案。vivo蓝河操作系统创新赛,聚焦基础软件赛道,共设置两个赛题,旨在推动操作系统行业技术革新繁荣操作系统行业生态。
请参考 https://learningcamp.cn/vivo
🌟初赛作品提交截止时间为【3月20日】,请大家尽早按照要求进行赛题准备
开发手册 https://docs.qq.com/s/DJAUTxVOvQ5DMlbf3KNOQq
赛事FAQ https://docs.qq.com/sheet/DV25uTlZtSVF0V3FK?tab=BB08J2
直播文档 https://docs.qq.com/pdf/DV09CaXhWUmlzVW9v?
赛题介绍及报名 https://competition.atomgit.com/competitionInfo?id=c50d174fbf4d55a7172b25cb784258f8
https://bbbbqqqq.feishu.cn/docx/ML6JdEaveoXy51xl05YcMmVZnWc
-
https://github.com/immunant/c2rust/
https://github.com/rust-lang/rust/tree/master/compiler
3.9/3.10 晚上还会安排第二次作品进展演示的内部汇报,
3.16/3.17 安排进行首批作品提交的内部汇报和点评 3.20 初赛作品提交截止
赛题1 - 蓝河代码转译工具
背景阐述
1.C/C++代码编写的系统大约70%的严重安全漏洞和内存使用不当相关,Rust语言一系列安全特性,可以在编 译阶段发现内存相关安全漏洞,用Rust语言编写更安全的操作系统,已经成为行业趋势
2.国内自主研发的操作系统和自主可控的软件生态都还不成熟,通过代码转译技术,提升开发者对新操作系统 的适配效率,促进国产操作系统软件生态发展成熟
蓝河代码转译工具
赛题鼓励开发者实现工具程序,完成与蓝河系统/应用相关的代码转译。
可选方向有两个:
底层代码转译:底层的 C /C++代码转 Rust 代码工具
应用代码转化:将其它形态的移动应用(App、小程序、H5 应用等) 代码转成蓝河应用代码,也可以是自然语言/图片等形态生成蓝河应用 代码
赛题价值
- 加快国产操作系统关键技术建设,从源头保障操作系统内存安全, 促进国产操作系统底层技术发展
- 加速国产操作系统生态建设,同时繁荣hapjs开源社区生态
3.希望通过本项赛事,携手开发者为国产操作系统底层技术及生态建 设做出贡献
难易程度
• **技术栈:**熟悉C/C++、Rust语言开发或者应用开发(熟悉前端 技术栈以及APP、小程序等应用开发)
**• 可实现:**不论是C转Rust,还是应用代码之间的转换,使用大模 型、正则表达式匹配、自建语法树等技术完成常规代码转换已 经是行业常见方案
**• 上限高:**对于代码数量级大的转译,或者复杂特性的代码转译, 要实现完美代码转译有比较高的实现难度
实现举例
• 用蓝心大模型的转译能力,将在 Linux上可编译执行的多线程系统 调用C代码转译成Rust代码
• 输出的Rust代码功能保持一致,且 采用了Rust的Arc/Mutex机制保证 线程安全,同样在Linux平台上可 编译执行
技术支持
• **文档:**开发环境搭建,开发示例,测试用例
**• 开发环境:**开发工具(IDE、真机调试器apk)、远程云真机等
**• 培训与答疑:**初赛开始前,提供线上直播、视频教程供参赛者 学习,同时准备参赛者常见问题FAQ文档;初赛开始后,社区 内提供三名技术人员分别对不同 技术方向问题进行答疑和指导
评价标准
python主要是针对大模型来说的,rust环境主要用于验证翻译后的代码
当然转译工具也可以用Rust实现,比如开发案例就是Rust+GLM4
本质上转译工具实现手段不做限制,任何语言都可以,参赛者可以用自己熟悉的
1:是的 2:主要涉及操作系统底层代码,因此一些高级特性不是作很高要求,例如一些很复杂的Modern C++的机制
day1
https://docs.qq.com/doc/DV0lXQ0hQeGVGeFBv
https://thy1037.github.io/vivo-c2rust/dev-demo.html
centos操作系统
我选择的是vscode + 远程主机方式
|
|
Rust
rustc –version rustc 1.75.0 (82e1608df 2023-12-21)
若本机已有Rust版本,请调整为Stable版本而不是Nightly版本,
Rustup 工具已成为推荐的安装 Rust 的方式,
$ rustup install stable $ rustup install beta $ rustup install nightly
rustup toolchain default nightly
rustup toolchain list stable-x86_64-unknown-linux-gnu (default) nightly-2022-11-15-x86_64-unknown-linux-gnu
VSCode
配置vscode 远程开发+ 免密登录
|
|
测试用例
https://h5.vivo.com.cn/blueos-atom/c2rust/测试用例.zip
开发范例
最终交付作品形式必须是可执行标的,如Console/GUI App, WebUI,或者VSCode插件等。
本文暂简单提供一个Console App,基于智谱GLM-4大模型(仅供参考不做标准):
https://h5.vivo.com.cn/blueos-atom/c2rust/开发范例.zip
需要注意,开发者需要将工程目录下,src/sse_invoke_method/sse_invoke/constant_value.rs
中的常量定义"pub const API_KEY: &str = “填入自己申请的APIkey,查看链接见:
https://maas.aminer.cn/usercenter/apikeys
由于开发范例仅展示最基础的流程,最终开发评测标准基本可以作如下参考:
代码转换能力标准:代码段级 < 文件级 < 模块级/项目级。
代码转换内容标准:简单数据结构算法/基础语言特性 < 复杂数据结构算法/高级语言特性/简单系统功能 < 复杂系统功能。
代码转换质量标准:跟一般的AIGC工具评测的pass@k标准不同,本大赛从实际落地出发,期望迎接挑战和高目标,期待能够做出高质量的转换工具,最终转换结果能否一次到位的通过编译和验证,以及每百行代码编译错误数都是评测的重要参考。在最终结果相同的情况下,输出结果的性能也会作为额外的考察维度。
需要注意的是,虽然大模型给代码翻译带来了便利,但是其能力并不足以完美处理所有的转译需求,本次大赛鼓励基于合法合规的各种大模型做深度的SFT、PE等大模型优化提升手段,从而能在相对具体的使用情境中(C/C++ -> Rust)达成不错的目标!
构建并运行 Cargo 项目
cargo build
cargo run
由于开发范例仅展示最基础的流程,最终开发评测标准基本可以作如下参考:
代码转换能力标准:代码段级 < 文件级 < 模块级/项目级。
代码转换内容标准:简单数据结构算法/基础语言特性 < 复杂数据结构算法/高级语言特性/简单系统功能 < 复杂系统功能。
代码转换质量标准:跟一般的AIGC工具评测的pass@k标准不同,
本大赛从实际落地出发,期望迎接挑战和高目标,期待能够做出高质量的转换工具,最终转换结果能否一次到位的通过编译和验证,以及每百行代码编译错误数都是评测的重要参考。在最终结果相同的情况下,输出结果的性能也会作为额外的考察维度。
需要注意的是,虽然大模型给代码翻译带来了便利,但是其能力并不足以完美处理所有的转译需求,本次大赛鼓励基于合法合规的各种大模型做深度的SFT、PE等大模型优化提升手段,从而能在相对具体的使用情境中(C/C++ -> Rust)达成不错的目标!
https://h5.vivo.com.cn/blueos-atom/c2rust/测试用例.zip
交付材料清单
初赛作品
初赛提交作品须包括:代码转译工具代码及文档,代码转译工具的部署说明及使用手册,包括使用大模型还需要提供Prompt Engineering相关的机制和代码以及演示视频等。
(1)代码转译工具代码
即实现的代码转译工具程序的源代码,如果使用LLM,则应该包含LLM相关机制策略代码及说明包括PE相关内容,同时需要提供一键部署脚本等部署工具链
(2)说明文档
说明文档包括:作品标题、摘要、软件分类、应用领域、开放源码组织认可的开放源码许可证类型(可多个)等软件基本信息、作品概述等。作品概述包括但不限于软件背景及应用领域、作品特点和设计思路、功能描述、体系结构和关键技术点、功能模块设计、验收标准等。
决赛作品
入围决赛选手根据专家组建议,进一步完善作品,细化文档,同时提供路演PPT。路演时间每队15分钟,10分钟项目展示+5分钟现场答辩。
代码管理
参赛队伍需要向赛题共建方申请创建私仓,然后将源代码上传到AtomGit平台上。
提交要求
(1)参赛队伍提交作品前,需将队长在大赛官网上的注册邮箱、用户名、姓名、手机号码、赛题、开发方向等信息邮件发送给本赛题工作人员(联系邮箱:blueos@vivo.com,邮件主题命名为:“队伍名称”建仓申请),工作人员将为该队伍在 AtomGit 上创建一个私有仓库,并将队长添加为该仓库管理员。参赛队伍完成作品后,将作品相关文档及源代码提交至该仓库即可。提交作品命名方式为:队伍名称+作品标题。AtomGit网址:https://atomgit.com/vivoblueos。
(2)参赛团队均可在不改变作品名称和主要功能的基础上,持续推进作品迭代升级,对应赛程最后一次提交的作品为参赛作品。
(3)评审期间,参赛团队须按照组委会的要求补充提交参赛作品有关材料。
(4)所有已提交的参赛作品和相关材料原则上不予退还。
(5)参赛团队如果需要使用到大模型等AI相关技术,鼓励使用开源技术。