前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rust 与 Wasm 在 Serverless AI 推理函数中的作用

Rust 与 Wasm 在 Serverless AI 推理函数中的作用

作者头像
腾讯云serverless团队
发布2021-02-26 17:40:30
1.4K0
发布2021-02-26 17:40:30
举报

公有云中的?Serverless?TensorFlow?函数

对于软件开发者和学生来说,人工智能是有偿的。2021年,最流行的 AI 框架 Tensorflow 开发者的平均年薪为148508 美元,换算成人民币将近百万。现在,即使是入门级编程工作,开发者也必须具备人工智能技能。实际上,遵循在线教程并为图像识别和自然语言处理等任务训练自己的 Tensorflow 模型非常容易。只需要一些基本的 Python 知识即可进行培训,然后运行该模型进行演示。 仅仅知道如何使用简单的 Python 来训练模型并不会带来太大的收益。 但是,将刚刚训练的模型作为可靠的 Web 服务提供给其他人使用要困难得多。对于开发者而言,在生产环境中部署 TensorFlow模型存在重大挑战。公司和雇主为能够克服这些挑战的人们付出了高昂的价格。

  • Python语言和框架在准备和处理模型的输入和输出数据方面效率低下。据估计,AI 计算工作量的 90% 用于数据准备。Python语言实在太繁琐,太慢。
  • 很难按需扩展服务。由于 AI 推理的计算要求,即使只有几个请求,服务器计算机也可能会被暂时中止。按需上下扩展服务器数量至关重要。

但是,有解决此问题的简单方法。借助 WebAssembly 虚拟机 SSVM 和腾讯云 serverless,你可以使用50行之内的简单 Rust 代码将 Tensorflow 模型作为服务部署到生产环境中。通过模板函数,你将能够免费在腾讯云上部署可用于生产环境的 TensorFlow 模型!

如果您按照本文中的步骤进行操作,在腾讯云上部署了 Tensorflow serverless 函数,你将获得搪瓷杯、贴纸等周边产品。详情请点击 Serverless 陪你云过年,惊喜好礼等你来拿

Serverless AI 推理函数是怎么运行的

为应对上文提到的挑战,我们选择的技术如下:

  • Rust 编程语言非常快速且内存安全。是高性能数据处理和模型执行逻辑的理想选择。
  • WebAssembly 充当了现代 Rust 程序、最新的 Tensorflow 库和强化公共云操作系统之间的桥梁。WebAssembly 是兼容性沙箱,对于开发者的体验至关重要。
  • 腾讯云 serverless 提供可扩展的基础架构,以运行 Rust 和 WebAssembly 函数进行 TensorFlow 推理。结合 Serverless 框架,腾讯云 serverless 为简单软件部署提供了出色的开发者体验。

现在,让我们看看它是如何工作的。首先,从 GitHub fork 此模板项目,并完成所有准备工作。你可以使用 GitHub Codespaces IDE 或 Docker 镜像,也可以在自己的计算机上安装 Rust、?ssvmup、?serverless framework?。 模板函数是图像识别 AI 即服务。它利用经过训练的 TensorFlow 模型来识别图像中的食物。只需不到 50行 简单的Rust代码,就可以将其部署在腾讯云 serverless 上。腾讯云 serverless 可以按需扩展,并且按照实际使用收取费用。

Rust 代码

Rust 代码用于加载输入图像加载并执行Tensorflow模型以识别该图像上的内容。这里的模型是 Tensorflow Lite 格式,可以识别输入图像上的食物。

代码语言:javascript
复制
   // 加载训练好的 TensorFlow lite 模型。    let model_data: &[u8] = include_bytes!("lite-model_aiy_vision_classifier_food_V1_1.tflite");
    // 上传图像的格式是 base64 编码,并通过腾讯云 API 网关封装在 JSON 对象中。    let mut buffer = String::new();    io::stdin().read_to_string(&mut buffer).expect("Error reading from STDIN");    let obj: FaasInput = serde_json::from_str(&buffer).unwrap();    let img_buf = base64::decode_config(&(obj.body), base64::STANDARD).unwrap();
    // 加载上传图像并将其调整为192x192,这是这个 MobileNet 模型所需的尺寸。    let flat_img = ssvm_TensorFlow_interface::load_jpg_image_to_rgb8(&img_buf, 192, 192);
    // 用图像作为输入张量运行模型,并获取模型输出张量。    let mut session = ssvm_TensorFlow_interface::Session::new(&model_data, ssvm_TensorFlow_interface::ModelType::TensorFlowLite);    session.add_input("input", &flat_img, &[1, 192, 192, 3])           .run();????let?res_vec:?Vec<u8>?=?session.get_output("MobilenetV1/Predictions/Softmax");

res_vec 向量包含图像中每个对象的概率列表(例如,该图像中蛋糕的概率为0.8)。下面的 Rust 代码读取这些对象的标签,并从 Tensorflow 模型输出中以最高概率打印出对象标签。

代码语言:javascript
复制
let labels = include_str!("aiy_food_V1_labelmap.txt");
let mut i = 0;let mut max_index: i32 = -1;let mut max_value: u8 = 0;while i < res_vec.len() {    let cur = res_vec[i];    if cur > max_value {        max_value = cur;        max_index = i as i32;    }    i += 1;}
let mut label_lines = labels.lines();for _i in 0..max_index {    label_lines.next();}
let class_name = label_lines.next().unwrap().to_string();if max_value > 50 && max_index != 0 {    println!("The image {} contains a <a href='https://www.google.com/search?q={}'>{}</a>", confidence.to_string(), class_name, class_name);} else {    println!("No food item is detected");
}
代码语言:javascript
复制

部署你自己的 TensorFlow AI 推理函数

在后端,Rust 代码被编译为 WebAssembly 字节码,并在 SSVM WebAssembly 运行时中执行。SSVM 已预先配置为能在多个操作系统环境中访问高性能 TensorFlow 本机库,包括腾讯云的 serverless 容器。反过来,腾讯云 serverless 提供了一个简单的解决方案,用于扩展 Tensorflow 推理函数。 在 Codespaces IDE 中打开一个 Terminal 窗口,然后从 Docker 或命令行运行以下命令以构建云函数。

代码语言:javascript
复制
$ ssvmup build —enable-aot

在 Terminal 窗口,运行下面的命令行将 TensorFlow 云函数部署到腾讯云。

代码语言:javascript
复制
$ cp pkg/scf.so scf/
$ sls deploy... ...website:?https://sls-website-ap-hongkong-kfdilz-1302315972.cos-website.ap-hongkong.myqcloud.com

在浏览器打开你部署得到的 URL,看看你吃了啥吧。

小结

在本文中,我们讨论了如何创建简单、安全和高性能的 Rust 函数来运行 Tensorflow 模型,以及如何将这些函数作为可伸缩和按需的 AI 服务部署到公共云上。 接下来,你可以在腾讯云上部署 Tensorflow serverless 函数,并获得一份精美周边。部署就有奖!腾讯云 Serverless 为开发者提供了足够的免费额度。

相关链接:

One More Thing

立即体验腾讯云 Serverless Demo,获取 Serverless 新用户礼包,请在 PC 端访问: serverless.cloud.tencent.com/start?c=wx

欢迎进入千人 QQ 群 (537539545) 交流!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」查看更多!

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-26,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Serverless AI 推理函数是怎么运行的
  • Rust 代码
  • 部署你自己的 TensorFlow AI 推理函数
  • 小结
  • One More Thing
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com