学习方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 一、这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题

 二、这个技术的优势和劣势分别是什么 

 三、这个技术适用的场景。任何技术都有其适用的场景,离开了这个场景

 四、技术的组成部分和关键点。

 五、技术的底层原理和关键实现

 六、已有的实现和它之间的对比

背景

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

3.16/3.17 安排进行首批作品提交的内部汇报和点评 3.20 初赛作品提交截止

赛题1 - 蓝河代码转译工具

背景阐述

1.C/C++代码编写的系统大约70%的严重安全漏洞和内存使用不当相关,Rust语言一系列安全特性,可以在编 译阶段发现内存相关安全漏洞,用Rust语言编写更安全的操作系统,已经成为行业趋势

2.国内自主研发的操作系统和自主可控的软件生态都还不成熟,通过代码转译技术,提升开发者对新操作系统 的适配效率,促进国产操作系统软件生态发展成熟

蓝河代码转译工具

赛题鼓励开发者实现工具程序,完成与蓝河系统/应用相关的代码转译。

可选方向有两个:

底层代码转译:底层的 C /C++代码转 Rust 代码工具

应用代码转化:将其它形态的移动应用(App、小程序、H5 应用等) 代码转成蓝河应用代码,也可以是自然语言/图片等形态生成蓝河应用 代码

赛题价值

  1. 加快国产操作系统关键技术建设,从源头保障操作系统内存安全, 促进国产操作系统底层技术发展
  2. 加速国产操作系统生态建设,同时繁荣hapjs开源社区生态

3.希望通过本项赛事,携手开发者为国产操作系统底层技术及生态建 设做出贡献

难易程度

**技术栈:**熟悉C/C++、Rust语言开发或者应用开发(熟悉前端 技术栈以及APP、小程序等应用开发)

**• 可实现:**不论是C转Rust,还是应用代码之间的转换,使用大模 型、正则表达式匹配、自建语法树等技术完成常规代码转换已 经是行业常见方案

**• 上限高:**对于代码数量级大的转译,或者复杂特性的代码转译, 要实现完美代码转译有比较高的实现难度

实现举例

• 用蓝心大模型的转译能力,将在 Linux上可编译执行的多线程系统 调用C代码转译成Rust代码

• 输出的Rust代码功能保持一致,且 采用了Rust的Arc/Mutex机制保证 线程安全,同样在Linux平台上可 编译执行

img

技术支持

**文档:**开发环境搭建,开发示例,测试用例

**• 开发环境:**开发工具(IDE、真机调试器apk)、远程云真机等

**• 培训与答疑:**初赛开始前,提供线上直播、视频教程供参赛者 学习,同时准备参赛者常见问题FAQ文档;初赛开始后,社区 内提供三名技术人员分别对不同 技术方向问题进行答疑和指导

评价标准

img

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 + 远程主机方式

1
2
3
4
5
6
CPU - 2核 内存 - 2GB
系统盘 - SSD云硬盘 50GiB
流量包 - 300GB/月(带宽:4Mbps)

而不是
推荐Ubuntu版本为20.04: https://releases.ubuntu.com/focal/ubuntu-20.04.6-desktop-amd64.iso,代码转译工具的开发操作系统不做限制,最终转译工具是通过OS App,WebUI服务,或者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 远程开发+ 免密登录

1
2
3
4
5
6
7
# 客户端
cat ~/.ssh/id_rsa.pub

# 服务端
chmod 700 ./.ssh
chmod 600 ./.ssh/authorized_keys

测试用例

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)达成不错的目标!

https://open.bigmodel.cn/

构建并运行 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相关技术,鼓励使用开源技术。