最近一直在玩机器学习在金融量化交易的应用, 尝试性的写了一个产品, 主体逻辑代码是用Python写的, 其中有一部分是是使用XCode写的命令行工具, 用来调用机器学习模型输出结果, 与Python的主体程序进行沟通. XCode自身有一个功能, 直接可以打开mlmodel文件, 直接加载到XCode中即可. 但是, 我的逻辑设计是每个独立股票各自独立的机器学习模型, 几千个模型都导入到XCode自然不方便, 于是便使用代码手动加载模型.
原本这是一个比较简单的过程, 也没有什么好写的. 但是, 一个朋友说起自己要做人工智能部分的东西, 他搞了几十个模型, 是手动一个个拉到XCode进行处理, 我告诉了他其实可以手动通过代码编译模型, 再在代码中加载的. 虽然是个很小的功能, 但想到这个东西可能对其他人也有帮助, 就随便写一个简单的例子来说一下.
主要的代码部分就是上述这么简单, 基本的流程有5步:
1. 获取模型文件的所在目录URL, 注意, 这个URL必须是本地的文件URL, 如果想考虑支持在线模型, 可以考虑搞一个下载功能.
2. 编译模型, .mlmodel文件会被编译成.mlmodelc文件夹, 放到一个临时文件区, 然后输出编译好的.mlmodelc目录URL.
3. 使用编译后的.mlmodelc生成模型.
4. 生成一个参数准备器.
5. 使用生成后的参数准备器放到模型中进行计算, 得到具体的结果.
没错, 就这么简单.
再额外提一点, 临时文件区是有存量限制的, 单个进程只能在临时文件区生成999个临时文件, 如果有超过1000个以上的模型要处理, 必须考虑手动移动编译好的.mlmodelc文件. 否则, 编译.mlmodel的过程会失败, 而且, 失败的错误莫名其妙, 我当时在这点上搞砸了, 研究了好久, 才发现bug所在.
网友评论