跳到主要内容

使用 VS Code 开发组件

组件种类分为“算法组件”和“应用组件”,2 种不同的组件在机器学习以及应用开发中使用,以下是为 2 个组件案例指导。

分类模型(机器学习频道)

操作步骤:

  1. 在"机器学习"的"我的项目"文件夹下新建一个项目,在“开发工具”中找到“VS Code-Python”组件,拖入右侧面板。
  2. 在“数据读写”中拖入需要使用的数据上传组件,本例使用两个“CSV上传”。
  3. 点击“VS Code-Python”组件,右侧工具栏点击“高级配置”,如图所示增加输入桩并变更输入类型,本例需 2 个输入类型为 CSV 文件的输入桩,同理增加输出桩。

  1. 组件的参数需要在右侧“参数设置”中编辑,其中第一个参数运行模式有三种:在线编辑,本地编辑(内测中),正式运行,这里使用默认的在线编辑,组件内代码写好之后可以切换为正式运行;下面的未定义参数可以改写为自己需要的名字并写入相应参数,本例中分别改写为特征字段与目标值,并分别填入sepal_length, sepal_width, petal_length, petal_width与class。

  1. 连接组件,如下图所示

  1. 点击 csv 上传,选择文件,上传项目用到的 csv 文件,本例使用文件如下(请在此处下载本例使用数据)

data1.csv data.csv

  1. 选中“VS Code-Python”组件,鼠标移动到页面上方的运行,选择运行该节点,如下图:

  1. 点击“VS Code-Python”组件,在右面板选择在新窗口打开。

  2. 进入代码页面,在 main.py 中编写自己的脚本,算法逻辑写在 HelloWorld 函数内:

    在 requirement.txt 中输入 sklearn。

在 main.py 中输入以下代码:

import os 
import suanpan
import pandas as pd
from sklearn.linear_model import LogisticRegressionCV
from joblib import dump
from suanpan.app import app
from suanpan.app.arguments import Csv, Json, Folder, ListOfString, String

@app.input(Csv(key="inputData1", alias="part1"))
@app.input(Csv(key="inputData2", alias="part2"))
@app.param(ListOfString(key="param1", alias="features"))
@app.param(String(key="param2", alias="target"))
@app.output(Json(key="outputData1", alias="acc"))
@app.output(Folder(key="outputData2", alias="model"))
def HelloWorld(context):
args = context.args

part1 = args.part1
part2 = args.part2
df = pd.concat((part1, part2))
X = df[args.features]
y = df[args.target]
Cs = [1, 10,100,1000]
clf = LogisticRegressionCV(Cs=Cs, cv=5)
clf.fit(X, y)
if not os.path.exists("/code/model"):
os.makedirs("/code/model")
dump(clf, "/code/model/model.joblib")

return {"score": clf.score(X, y)}, "/code/model"

if __name__ == "__main__":
suanpan.run(app)

@app.input 为输入节点传入
@app.output 为输出
@app.param 为参数

Csv, Json, Folder, ListOfString, String 为 suanpan 封装好的类型,分别自动解析相应格式的文件或参数,比如 Csv 会将输入解析为 pandas 的 dataframe,ListOfString 将逗号分隔的参数解析为 string 列表
HelloWorld 可以改写为其他名字,并在该函数内写入自己需要的代码逻辑。
return 需要与 @app.output 的个数匹配,本例有两个输出则返回两个值 。
SDK详细信息请参考:《[快速入门 - Quick Start](https://xuelangyun.yuque.com/docs/share/bd2fea78-b140-4613-a586-d6c03d9e9d69?# 《快速入门 - Quick Start》)》

  1. 调试时运行./run.sh

  1. 代码调试成功后可以将 vscode 参数设置中的运行模式改为正式运行,就可以直接在 vscode 概览页的输出结果\查看结果中查看运行生成的文件。

  2. 点击编辑好的 vscode 组件,在右侧面板中找到节点ID,点击从节点创建组件就可以制作自己的组件了。

算法开发示例 1.zip

Hello World(应用开发频道)

操作步骤:

  1. 在"应用开发"的"我的项目"文件夹下新建一个服务,拖入 vscode 组件。
  2. 拖入“webinput”和“weboutput”组件。
  3. 连接组件如图:

  1. 点击“webinput”组件,设置接口名称。

8.png

  1. 点击页面右上方“运行-调试”,选中“VS Code”组件,在参数设置中点击新窗口打开。

  1. 在页面中选中 main.py,写入代码逻辑如下:
import suanpan 
from suanpan.app import app
from suanpan.app.arguments import Json, String

@app.input(Json(key="inputData1", alias="param"))
@app.output(String(key="outputData1", alias="helloWorldString"))
def helloMan(context):
args = context.args
return "Hello {}!".format(args.param["name"])

if __name__ == "__main__":
suanpan.run(app)
  1. 测试API:在命令行输入./run.sh,运行后,切换到服务部署页面,点击 web input 选中右侧面板中的测试,在测试输入中写入{"name":"suanpan"},可以查看到测试输出为:{"success":true,"id":"d3e8efe0-20b1-11ea-9723-a39d2f78a2a1","data":"Hello suanpan!"},代码运行成功。

  1. 关闭 vscode 编辑界面,在项目页面中点击停止按钮,将 vscode 参数设置中的运行模式改为正式运行,再次运行即可直接测试API。
  2. 点击编辑好的 vscode 组件,在右侧面板中找到节点ID,点自动保存到创建的组件内。

应用开发示例.zip

用制作好的镜像开发组件

请参考:https://github.com/xuelang-group/AiLab-Components-Demo