将应用迁移到云能够减少运维成本,Serverless是应用迁移上云的流行方案。机器学习应用依赖多,因此上云比较麻烦。这里给出机器学习迁移上云的案例。
机器学习的工作流程可以分为三个部分:
1.首先对原始数据进行预处理;
2.然后将处理过的数据进行模型训练,会选用不同的参数和算法组合进行多次训练,形成多个备选模型;
3.最后选一个最合适的模型进行部署。
(作者 | 杜万(倚贤) 阿里巴巴技术专家)
其中应用上云只需要修改第3步,架构如下图所示:
其中,模型是已经训练好的数据文件,只需要随函数打包上传即可。然而,函数调用依赖机器学习的库,机器学习的库又依赖大量的库,导致机器学习的库在云函数环境中特别难部署。因此机器学习迁移上云的案例的重点在于依赖怎么部署。
机器学习的主流方案是使用tensorflow,tensorflow基于Python实现,Python没有代码依赖一键打包的机制,因此用户需要手动将依赖部署到云函数的环境。在这里,推荐使用层来部署依赖。
首先对依赖进行分类,即应用依赖和系统依赖这两类。对于应用依赖,可以直接使用pip安装到指定目录,然后将其打包为层。对于系统依赖,则可以把所有库(各种.so文件)放在同一个目录打包。
已绑定层的函数被触发运行,启动并发实例时,将会解压加载函数的运行代码至 /var/user/ 目录下,同时会将层内容解压加载至 /opt 目录下。
若需使用或访问的文件 file,放置在创建层时压缩文件的根目录下。则在解压加载后,可直接通过目录 /opt/file 访问到该文件。若在创建层时,通过文件夹进行压缩 dir/file,则在函数运行时需通过 /opt/dir/file 访问具体文件。
在函数绑定了多个层的情况下,层中文件的解压加载将按照绑定时的顺序进行。将按序号从小到大的顺序进行排序,排序越靠后侧层加载时间也相应靠后,但均会在函数的并发实例启动前完成加载。在函数代码初始化时,就已经可使用层中的文件了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。