点亮 ⭐️ Star · 照亮开源之路

摘要
PyDolphinScheduler 3.1.0


python tutorial.py即可提交工作流到DolphinScheduler中。

pydolphinscheduler yaml -f tutorial.yaml即可提交工作流到DolphinScheduler中。
系统介绍

使用pydolphinscheduler来支持workflow as code的方式构建工作流,无需在页面点点点,运行一行命令即可快速创建工作流并运行 下载与处理完股票数据后,会将数据送到Amazon SageMaker中使用SageMaker Pipeline执行数据集处理,训练,评估以及批量推理
系统概况


系统展示
系统运行原理
选股逻辑
股价与布林带三条轨道的相对值 股价与多条均线的相对值;多条均线的多个间隔的斜率 当前K线的形态,用talib pattern计算,如是否为三只乌鸦,是否为十字星等,详情可见K线模式识别(https://www.jianshu.com/p/fd5c7f49db33)
模型训练
任务调度
前端展示
项目地址
git clone https://github.com/jieguangzhou/DolphinScheduler-MLOps-Stock-Analysis
cd DolphinScheduler-MLOps-Stock-Analysis
git checkout sagemaker
选股系统工作流介绍


prepare_datas
: 每日数据下载,信号计算,特征(在量化交易中称为因子)计算train_model
:生成训练数据,调用SageMaker Pipeline更新模型,对模型进行评估与批量数据推理recommend_stock
:将SageMaker Pipeline推理的数据下载下来后录入数据库进行股票推荐。

Prepare datas
prepare_datas,该工作流会下载股票数据并进行信号计算和特征计算
download_data
: 下载全市场的股票日线数据calc_signals
:进行信号计算(计算每天符合信号条件的股票,如每天5日均线与10日均线金叉的股票)calc_features
: 特征(量化交易中称为因子)计算(计算每个股票每天的特征值,如收盘价与5日均线的相对值,股票是否是十字星形态等)

training_model
training_model的各个任务的DAG图,该工作流主要执行以下任务
prepare_trainging_data
: 准备模型训练数据,并上传至Amazon S3中(后会交给SageMaker进行数据转换成训练集,验证集和测试集)prepare_inference_data
: 准备需要预测的股票数据,并上传至Amazon S3中sagemaker
:执行SageMaker Pipeline

SageMaker

StrockProcess: 处理数据集成为SageMaker内置算法适配的格式,并切分为训练集,验证集和测试集 StockTrain: 训练模型 StockEval: 评估模型 StockInference: 使用模型进行批量股票预测

recommend_stock


run_system

$ENV{STOCK_PROJECT}
语法表示会将环境变量STOCK_PROJECT
进行填充$WORKFLOW{"prepare_datas.yaml"}
语法表示创建prepare_datas.yaml
中的工作流并引用其名字,填充进来作为子工作流。

创建并执行工作流
# /bin/bash
# init config
user=Stock-Analysis
password=123456
tenant=$USER
project_name=pydolphin
api_address=127.0.0.1
api_port=25333
pydolphinscheduler config --set java_gateway.address $api_address
pydolphinscheduler config --set java_gateway.port $api_port
pydolphinscheduler config --set default.user.name $user
pydolphinscheduler config --set default.user.password $password
pydolphinscheduler config --set default.user.tenant $tenant
pydolphinscheduler config --set default.workflow.user $user
pydolphinscheduler config --set default.workflow.tenant $tenant
pydolphinscheduler config --set default.workflow.project $project_name
pydolphinscheduler config --set default.workflow.queue default
# 以上配置为pydolphinscheduler相关配置,包含ds地址,端口配置,以及租户,用户,项目的创建(若不存在)
# 以下为创建工作流的命令
# 配置环境变量,将会在yaml中引用
export STOCK_PROJECT=$(pwd)
# 创建工作流
pydolphinscheduler yaml -f pyds/run_system.yaml
项目实操


DolphinScheduler安装与启动
安装dolphinscheduler
tar -zxvf apache-dolphinscheduler-3.1.0-bin.tar.gz
cd apache-dolphinscheduler-3.1.0-bin
standalone-server/conf/common.properties中以下字段添加 aws 密钥,用于SageMaker组件的身份验证
# The AWS access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required
resource.aws.access.key.id=<YOUR AWS ACCESS KEY>
# The AWS secret access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required
resource.aws.secret.access.key=<YOUR AWS SECRET KEY>
# The AWS Region to use. if resource.storage.type=S3 or use EMR-Task, This configuration is required
resource.aws.region=<AWS REGION>
启动DolphinScheduler
bash bin/dolphinscheduler-daemon.sh start standalone-server
登录 DolphinScheduler
DolphinScheduler-MLOps-Stock-Analysis
git clone https://github.com/jieguangzhou/DolphinScheduler-MLOps-Stock-Analysis
cd DolphinScheduler-MLOps-Stock-Analysis
git checkout sagemaker
dmsa/db.py中的mysql配置,来保存信号特征和股票推荐结果
class CONFIG:
MYSQL_USER = 'root'
MYSQL_PASSWORD = '123456'
MYSQL_HOST = 'xxxxxxxxxxxxxxxx'
MYSQL_PORT = 3306
MYSQL_DATABASE = 'dolphinscheduler_mlops_stock'
~/.aws/config[default]
aws_access_key_id = <YOUR AWS ACCESS KEY>
aws_secret_access_key = <YOUR AWS SECRET KEY>
region = <YOUR AWS SECRET KEY>
virtualenv -p /usr/bin/python3 env
source env/bin/activate
pip install -r requirements.txt
python -m pip install apache-dolphinscheduler,可以在任意python环境中安装,实际任务执行无需pydolphinscheduler,pydolphinscheduler用于快速使用code的形式提交工作流。
bash pydolphin_init.sh即可。
pyds/prepare_datas.yaml中的
python -m dmsa.data.download ${data_path}后面加上200,表示只用200个股票进行pipeline的执行

总结

了解如何使用DolphinScheduler构建一个选股系统。 了解如何使用DolphinScheduler连接MLOps系统与其上下游任务。 了解DolphinScheduler SageMaker 组件的使用。 了解DolphinScheduler 通过配置文件管理工作流的实践。

打个广告:如果你对DolphinScheduler构建机器学习系统感兴趣可以加入社区一起参与交流 如果你有DolphinScheduler有构建机器学习系统或者调度机器学习任务经验的同学也欢迎投稿
参与贡献
随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。
社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689
非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22
如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。
参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。
添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。
Apache DolphinScheduler Meetup
金融与物流场景深度实践
活动形式:线上直播 活动时间:2022 年 10 月 29 日 14:00-15:30 报名方式:点击链接「一键报名」或扫描二维码预约 https://www.slidestalk.com/m/1256



添加小助手进交流群





