dsdemo代碼介紹
本文為您介紹dsdemo代碼所有功能板塊, 以及詳細(xì)的使用說明。
前提條件
已創(chuàng)建DataScience集群,詳情請參見創(chuàng)建Data Science集群。
下載dsdemo代碼:請已創(chuàng)建DataScience集群的用戶,使用釘釘搜索釘釘群32497587加入釘釘群以獲取dsdemo代碼。
config配置
# cat config
# !!! Extremely Important !!!
# !!! You must use A NEW EXP different from others !!!
EXP=exp1
# !!! ACR, Make sure NAMESPACE is public !!!
# kubectl create secret docker-registry regcred --docker-server=registry-vpc.cn-beijing.aliyuncs.com --docker-username=xxx --docker-password=yyy --docker-email=abc@hotmail.com
REGISTRY=registry-vpc.cn-beijing.aliyuncs.com
NAMESPACE=dsexperiment
IMAGE_SECRET=regcred
USERNAME=AAAAAAAA
PASSWORD=BBBBBBBB
# default storage class
# On EMR ECS: nfs-client
# On Aliyun ACK: alibabacloud-cnfs-nas
DEFAULT_STORAGECLASS=nfs-client
# k8s namespace, must be same with username when you are using sub-account.
KUBERNETES_NAMESPACE=default
# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep k8s-dashboard-admin | awk '{print $1}')
KUBERNETES_DASHBOARD_HOST=http://123.57.**.**:32699
# ingress domain
INGRESS_DOMAIN=baidu.com
# PREFIX, could be a magic code.
PREFIX=prefix
# sc
NFSPATH=/mnt/disk1/k8s_pv/default_storage_class/
#NFSPATH=/mnt/disk1/nfs/ifs/kubernetes/
# ak/sk for access oss
OSS_ENABLE=false
OSS_AKID=AAAAAAAA
OSS_AKSECRET=BBBBBBBB
OSS_ENDPOINT=oss-cn-beijing-internal.aliyuncs.com
OSS_BUCKETNAME=dstest-beijing
OSS_DIR=
# !!! Do not change !!!
OSS_OBJECTNAME=%%EXP%%_faissserver/item_embedding.faiss.svm
# ak/sk for access oss
OSS_HDFS_ENABLE=false
OSS_HDFS_AKID=AAAAAAAA
OSS_HDFS_AKSECRET=BBBBBBBB
OSS_HDFS_ENDPOINT=cn-beijing.oss-dls.aliyuncs.com
OSS_HDFS_BUCKETNAME=dstestossmnt-beijing
OSS_HDFS_OBJECTNAME=test/1.csv
OSS_HDFS_DIR=
# hdfsmount
# example:
# 192.168.**.**:9000 192.168.**.**:8020
HDFS_ENABLE=false
HDFS_MOUNTPOINT=192.168.32.114:9000
HDFS_DIR=
# nasmount
NAS_ENABLE=false
NAS_AKID=AAAAAAAA
NAS_AKSECRET=BBBBBBBB
NAS_MOUNTPOINT=1ac8f48ac1-idh23.cn-beijing.nas.aliyuncs.com
NAS_DIR=
# s3mount
S3_ENABLE=false
S3_AKID=AAAAAAAA
S3_AKSECRET=BBBBBBBB
S3_ENDPOINT=s3.us-west-1.amazonaws.com
S3_REGION=us-west-1
S3_BUCKET=dstests3
S3_DIR=
# region
REGIONID=cn-beijing
# emr-datascience clusterid
CLUSTERID="c-5777b31dbdfa****"
# HDFSADDR, train/test dir should be exist under $HDFSADDR, like
# user
# └── easy_rec
# ├── 20210917
# │ ├── negative_sampler
# │ │ ├── n0.csv
# │ │ └── _SUCCESS
# │ ├── hard_negative_sampler_user
# │ │ ├── x0.csv
# │ │ └── _SUCCESS
# │ ├── hard_negative_sampler_item
# │ │ ├── y0.csv
# │ │ └── _SUCCESS
# │ ├── hard_negative_sampler_edge
# │ │ ├── e0.csv
# │ │ └── _SUCCESS
# │ ├── test
# │ │ ├── test0.csv
# │ │ └── _SUCCESS
# │ └── train
# │ ├── train0.csv
# │ └── _SUCCESS
# └── 20210918
#HDFSADDR=hdfs://192.168.**.**:8020/user/easy_rec/metric_learning_i2i
#HDFSADDR=/ossmnt/user/easy_rec/metric_learning_i2i
#HDFSADDR=/osshdfsmnt/user/easy_rec/metric_learning_i2i
#HDFSADDR=/nasmnt/user/easy_rec/metric_learning_i2i
#HDFSADDR=/s3mnt/user/easy_rec/metric_learning_i2i
HDFSADDR=/osshdfsmnt/user/easy_rec/metric_learning_i2i
#MODELDIR=hdfs://192.168.**.**:9000/user/easy_rec/metric_learning_i2i_bk
#MODELDIR=/osshdfsmnt/user/easy_rec/metric_learning_i2i_bk
#MODELDIR=/nasmnt/user/easy_rec/metric_learning_i2i_bk
MODELDIR=/nasmnt/experiment_bk/
PREDICT_FOLDER=test
EXPORTDIR=/train/tf_model
REGEX="*.csv"
SUCCESSFILE="train/_SUCCESS,test/_SUCCESS"
EVALRESULTFILE=experiment/eval_result.txt
# for allinone.sh development based on supposed DATE & WHEN & PREDATE
# HOUR is empty meaning no hour folder.
DATE=20230601
HOUR=
WHEN=20230601190001
PREDATE=20230531
NEXTDATE=20230602
# for daybydaytrain_{easyrec,tf}.sh & multidays training, use HDFSADDR, MODELDIR
START_DATE=20230601
END_DATE=20230606
# HIVEINPUT
DATABASE=testdb
TRAIN_TABLE_NAME=tb_train
EVAL_TABLE_NAME=tb_eval
NEGATIVE_SAMPLER_TABLE_NAME=tb_negative_sample
HARD_NEGATIVE_SAMPLER_USER_TABLE_NAME=tb_negative_sample_user
HARD_NEGATIVE_SAMPLER_ITEM_TABLE_NAME=tb_negative_sample_item
HARD_NEGATIVE_SAMPLER_EDGE_TABLE_NAME=tb_negative_sample_edge
PREDICT_TABLE_NAME=tb_predict
PREDICT_OUTPUT_TABLE_NAME=tb_predict_out
PARTITION_NAME=ds
# DSSM: inference user/item model with user&item feature
# metric_learning_i2i: infernece model with item feature
# SEP: user&item feature file use same seperator
USERFEATURE=taobao_user_feature_data.csv
USER_SELECTED_COLS="user_id,cms_segid,cms_group_id,age_level,pvalue_level,shopping_level,occupation,new_user_class_level,tag_category_list,tag_brand_list"
USER_RESERVED_COLS=user_id
USER_OUTPUT_COLS=user_emb
ITEMFEATURE=taobao_item_feature_data.csv
# dssm_u2i
#ITEM_SELECTED_COLS="pid,adgroup_id,cate_id,campaign_id,customer,brand,price"
#ITEM_RESERVED_COLS=adgroup_id
#ITEM_OUTPUT_COLS=item_emb
# metric_learning_i2i
ITEM_SELECTED_COLS="itemid,cate_id,campaign_id,brand,customer,price"
ITEM_RESERVED_COLS=itemid
ITEM_OUTPUT_COLS=norm_embedding
# faiss_mysql: mysql as user_embedding storage, faiss as itemembedding index.
# holo_holo: holo as user & item embedding , along with indexing.
VEC_ENGINE=faiss_mysql
MYSQL_HOST=mysql.bitnami
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=emr-datascience
# wait before pod finished after easyrec's python process end.
# example: 30s 10m 1h
WAITBEFOREFINISHED=10s
# tf train
# PS_NUMBER take effect only on training.
# WORKER_NUMBER take effect on training and predict.
EASYREC_TRAINING_REPOSITORY=easyrec-training
EASYREC_TRAINING_VERSION=latest
EASYREC_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-easyrec-training:0.6.3-1
PS_NUMBER=2
WORKER_NUMBER=4
SELECTED_COLS=""
EDIT_CONFIG_JSON=""
# tf export
ASSET_FILES=""
# example: best_ckpt
# not end with /
CHECKPOINT_DIR=
# predict output file separator
OUTPUT_SEP=","
# pure tensorflow train
TENSORFLOW_TRAINING_REPOSITORY=tf-training
TENSORFLOW_TRAINING_VERSION=latest
TENSORFLOW_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-tf-training:2.13.0-1
TENSORFLOW_PS_NUMBER=2
TENSORFLOW_WORKER_NUMBER=4
TENSORFLOW_BATCHSIZE=4096
TENSORFLOW_LR=0.00032
TENSORFLOW_GPUS=4
TENSORFLOW_LOG_DIR=hdfs://192.168.**.**:9000/training_logs
# pytorch train
PYTORCH_TRAINING_REPOSITORY=pytorch-training
PYTORCH_TRAINING_VERSION=latest
PYTORCH_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-pytorch-training:cpu-1.13.1-1
#PYTORCH_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-pytorch-training:gpu-1.12.0-2
PYTORCH_MASTER_NUMBER=1
PYTORCH_WORKER_NUMBER=1
PYTORCH_GPUS=1
PYTORCH_LOG_DIR=hdfs://192.168.**.**:9000/training_logs
# deepspeed training
DEEPSPEED_TRAINING_REPOSITORY=deepspeed-training
DEEPSPEED_TRAINING_VERSION=latest
#DEEPSPEED_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-deepspeed-training:latest
DEEPSPEED_MASTER_NUMBER=1
DEEPSPEED_WORKER_NUMBER=1
PARTS=1
STEPS=100
DEEPSPEED_GPUS=1
DEEPSPEED_LOG_DIR=hdfs://192.168.**.**:9000/training_logs
# deepface
DEEPFACE_REPOSITORY=deepface
DEEPFACE_VERSION=latest
DEEPFACE_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-deepface:latest
# jax train
JAX_TRAINING_REPOSITORY=jax-training
JAX_TRAINING_VERSION=latest
#JAX_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-jax-training:latest
JAX_MASTER_NUMBER=2
JAX_WORKER_NUMBER=3
# ray train
RAY_TRAINING_REPOSITORY=ray-training
RAY_TRAINING_VERSION=latest
#RAY_TRAINING_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ray-training:latest
# easyrec customize action
CUSTOMIZE_ACTION=easy_rec.python.tools.modify_config_test
USERDEFINEPARAMETERS="--template_config_path hdfs://192.168.**.**:9000/user/easy_rec/rec_sln_test_dbmtl_v3281_template.config --output_config_path hdfs://192.168.**.**:9000/user/easy_rec/output.config"
#CUSTOMIZE_ACTION=easy_rec.python.tools.split_model_pai
#USERDEFINEPARAMETERS="--model_dir /train/tf_model_dssm/%%DATE%%/%%EXP%%_tmp_%%WHEN%% --user_model_dir /train/tf_model_dssm_user/%%DATE%%/%%EXP%%_tmp_%%WHEN%% --item_model_dir /train/tf_model_dssm_item/%%DATE%%/%%EXP%%_tmp_%%WHEN%%"
# hivecli
HIVE_REPOSITORY=ds_hivecli
HIVE_VERSION=latest
#HIVE_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_hivecli:latest
# ds-controller
DSCONTROLLER_REPOSITORY=ds_controller
DSCONTROLLER_VERSION=latest
#DSCONTROLLER_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_controller:latest
# aiserver
AISERVER_REPOSITORY=ds_aiserver
AISERVER_VERSION=latest
#AISERVER_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_aiserver:latest
# notebook
NOTEBOOK_REPOSITORY=ds_notebook
NOTEBOOK_VERSION=latest
#NOTEBOOK_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_notebook:3.6-1
NOTEBOOK_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_notebook:3.7-1
#NOTEBOOK_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_notebook:3.8-1
#NOTEBOOK_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_notebook:3.10-1
# hue
HUE_REPOSITORY=ds_hue
HUE_VERSION=latest
HUE_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_hue:latest
# httpd
HTTPD_REPOSITORY=ds_httpd
HTTPD_VERSION=latest
HTTPD_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_httpd:latest
# postgis
POSTGIS_REPOSITORY=ds_postgis
POSTGIS_VERSION=latest
#POSTGIS_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_postgis:latest
# customize
CUSTOMIZE_REPOSITORY=ds_customize
CUSTOMIZE_VERSION=latest
#CUSTOMIZE_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_customize:latest
# faissserver
FAISSSERVER_REPOSITORY=ds_faissserver
FAISSSERVER_VERSION=latest
FAISSSERVER_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_faissserver:latest
# vscode
VSCODE_REPOSITORY=ds_vscode
VSCODE_VERSION=latest
VSCODE_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_vscode:4.7.0-1
# sftp
SFTP_REPOSITORY=ds_sftp
SFTP_VERSION=latest
SFTP_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_sftp:latest
# tugraph
TUGRAPH_REPOSITORY=ds_tugraph
TUGRAPH_VERSION=latest
TUGRAPH_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-ds_tugraph:latest
# stablediffusion
STABLEDIFFUSION_REPOSITORY=stablediffusion
STABLEDIFFUSION_VERSION=latest
STABLEDIFFUSION_IMAGE=mybigpai-registry.cn-beijing.cr.aliyuncs.com/aigc/sdwebui:0.5.4
STABLEDIFFUSION_FRONTEND_NUMBER=1
STABLEDIFFUSION_MIDDLE_NUMBER=1
STABLEDIFFUSION_BACKEND_NUMBER=2
STABLEDIFFUSION_MYSQL_HOST=mysql.bitnami
STABLEDIFFUSION_MYSQL_PORT=3306
STABLEDIFFUSION_MYSQL_USER=root
STABLEDIFFUSION_MYSQL_PASSWORD=emr-datascience
STABLEDIFFUSION_MYSQL_DATABASE_KC=keycloak
STABLEDIFFUSION_MYSQL_DATABASE_SD=stablediffusion
STABLEDIFFUSION_MYSQL_DATABASE_WEBUI=webui_ds
# tag2text
TAG2TEXT_REPOSITORY=tag2text
TAG2TEXT_VERSION=latest
TAG2TEXT_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/official/public-tag2text:latest
# wandb
WANDB_REPOSITORY=wandb
WANDB_VERSION=latest
WANDB_PUBLIC_IMAGE=datascience-registry.cn-beijing.cr.aliyuncs.com/tools/wandb-local:0.41.0
# ak/sk for cluster resize, only support resize TASK now!!!
EMR_AKID=AAAAAAAA
EMR_AKSECRET=BBBBBBBB
HOSTGROUPTYPE=TASK
INSTANCETYPE=ecs.g6.8xlarge
NODECOUNT=1
SYSDISKCAPACITY=120
SYSDISKTYPE=CLOUD_SSD
DISKCAPACITY=480
DISKTYPE=CLOUD_SSD
DISKCOUNT=4
# ak/sk for ack cluster.
ACK_AKID=AAAAAAAA
ACK_AKSECRET=BBBBBBBB
ACK_CLUSTERID=c19a0070ff35b4e38b90f2dba977ed203
ACK_ELASTIC_POOL=xx_task
ACK_GATEWAY_IMAGE_NAME=EMR-DataScience-v11
# PVC_NAME IS DEPRECATED!!! PLEASE IGNORE IT !!!
PVC_NAME="default-pvc"
SAVEDMODELS_RESERVE_DAYS=3
HIVEDB="jdbc:hive2://192.168.**.**:10000/zqkd"
# eval threshold
THRESHOLD=0.3
# eval result key, 'auc' 'auc_ctcvr' 'recall@5'
EVALRESULTKEY="recall@1"
# eval hit rate for vector recall
ITEM_EMB_TABLE_NAME=item_emb_table
GT_TABLE_NAME=gt_table
EMBEDDING_DIM=32
RECALL_TYPE="u2i"
TOPK=100
NUM_INTERESTS=1
KNN_METRIC=0
# Separator cannot be set to , | #
# localfile can only be separated by tab and must have colmue , without setting the separator
ITEM_EMB_TABLE_FIELD_SEP=
GT_TABLE_FILED_SEP=
# sms or dingding
ALERT_TYPE=sms
# sms alert
SMS_AKID=AAAAAAAA
SMS_AKSECRET=BBBBBBBB
SMS_TEMPLATEDCODE=SMS_220default
SMS_PHONENUMBERS="186212XXXXX,186211YYYYY"
SMS_SIGNATURE="mysignature"
# dingtalk alert
ACCESS_TOKEN=AAAAAAAA
# pai-eas
EAS_AKID=AAAAAAAA
EAS_AKSECRET=BBBBBBBB
#EAS_ENDPOINT=pai-eas.cn-beijing.aliyuncs.com
EAS_ENDPOINT=pai-eas-manage-vpc.cn-beijing.aliyuncs.com
EAS_SERVICENAME=datascience_eastest
EAS_SERVICENAME2=datascience_eastest2
# ak/sk for access holo
HOLO_AKID=AAAAAAAA
HOLO_AKSECRET=BBBBBBBB
HOLO_ENDPOINT=hgpostcn-cn-zmb2yiq5****-cn-beijing.hologres.aliyuncs.com
# tensorboard port for run_tensorboard.sh
TENSORBOARDPORT=6006
# nni port
NNIPORT=38080
# jupyter password
JUPYTER_PASSWORD=emr-datascience
# enable_overwrite easyrec whl & easyrec_model.config, these two file were
# stored in MODELDIR/*
ENABLE_OVERWRITE=true
# For easyrec, if ENABLE_OVERWRITE=true then ENABLE_CONFIGMAP_OVERWRITE
# Notice, this option only take effect on easyrec config, because of 3MB limits.
ENABLE_MOUNT_CONFIGMAP=true
# slb
LOADBALANCER_AKID=AAAAAAAA
LOADBALANCER_AKSECRET=BBBBBBBB
LOADBALANCERID=lb-2zee89fb6z4glreop****
# datascience administrator, common user should not touch these parameters.
DATASCIENCE_ADMIN_AKID=AAAAAAAA
DATASCIENCE_ADMIN_AKSECRET=BBBBBBBB
# For some users who are running pyspark & meachine learning jobs in jupyter notebook.
# ports for mapping when notebook enabled, multi-users will conflict on same node.
HOSTNETWORK=true
MAPPING_AISERVER_PORT=8080
MAPPING_FILEBROWSER_PORT=5000
MAPPING_STABLEDIFFUSION_WEBUI_PORT=16000
MAPPING_JUPYTER_NOTEBOOK_PORT=16200
MAPPING_NNI_PORT=16201
MAPPING_TENSORBOARD_PORT=16202
MAPPING_VSCODE_PORT=16203
MAPPING_STABLEDIFFUSION_PORT=16204
MAPPING_KEYCLOAK_PORT=16205
MAPPING_DEEPFACE_PORT=16206
MAPPING_SFTP_PORT=16207
MAPPING_TUGRAPH_PORT=16208
MAPPING_HTTPD_PORT=16209
MAPPING_HUE_PORT=16210
MAPPING_CHATGLM_PORT=16211
MAPPING_TAG2TEXT_PORT=16212
MAPPING_WANDB_PORT=16213
極簡模式提交任務(wù)
# sh allinone.sh -d
loading ./config
You are now working on k8snamespace: default
*** Welcome to DataScience ***
0) Exit K8S: default, EXP: exp1
ppd) Prepare data ppk) Prepare DS/K8S config mds) mount datasource to ecs/gateway
1|build) build easyrec-training image buildall) build all images(slow) ser) showevalresult
apc/dpc) apply/delete-easyrec-precheck 2/3) apply/delete-easyrec-training 4/5) apply/delete-easyrec-eval
4d/5d) apply/delete-easyrec-evaldist 6/7) apply/delete-easyrec-export 4hr/5hr) apply/delete-easyrec-evalhitrate
8/9) apply/delete-easyrec-serving 10/11) apply/delete-easyrec-predict 12/13) apply/delete-easyrec-featureselection
14/15) apply/delete-easyrec-customize 18/19) apply/delete-ds-std-training cwd/dwd/swd)create/delete/show-wandb
20/21) apply/delete-ds-glm-training 22/23) apply/delete-ds-chatglm-training 24/25) apply/delete-tftrain-example1
26/27) apply/delete-tftrain-example2 28/29) apply/delete-tftrain-example3 30/31) apply/delete-tftrain-example4
32/33) apply/delete-tftrain-example5 34/35) apply/delete-tftrain-example6 36/37) apply/delete-tftrain-example7
38/39) apply/delete-tftrain-example8 mt/dmt) apply/delete-multidaystraining me/dme) apply/delete-multidayseval
40/41) apply/delete-pttrain-gloocpu 42/43) apply/delete-pttrain-gloogpu 44/45) apply/delete-pttrain-ncclgpu
cnt/dnt/snt)create/delete/show-notebook cvs/dvs/svs)create/delete/show-vscode cdf/ddf/sdf)create/delete/show-deepface
csdb/dsdb/csdb)create/delete/show-SD-base csd/dsd/ssd)create/delete/show-SD-frontend ctt/dtt/stt)create/delete/show-tag2text
moss/uoss) mount/umount OSS mosshdfs/uosshdfs)mount/umount OSSHDFS mhdfs/uhdfs)mount/umount HDFS
mnas/unas) mount/umount NAS ms3/us3) mount/umount AWS-S3 cmts) check mounting status
manony) mount OSS/OSSHDFS/HDFS/S3/NAS uanony) umount OSS/OSSHDFS/HDFS/S3/NAS ctb/dtb/DTBA/stb)create/delete/show-TensorBoard(OHSN)
a) kubectl get tfjobs b) kubectl get sdep c) kubectl get pytorchjobs
mp|mpl) compile mlpipeline ppl) compile pipelines wfl) compile workflows
tb) tensorboard(hdfs) logs) show pod logs setnl) set k8s node label
tp) kubectl top pods tn) kubectl top nodes util) show nodes usage
e|clean) make clean cleanall) make cleanall bu) bdupload
99) kubectl get pods 99l) get pods along with log url sall) show middleware document links
>
dsdemo功能介紹
基礎(chǔ)環(huán)境配置
命令選項(xiàng) | 說明 |
ppd | 準(zhǔn)備測試數(shù)據(jù),將 |
ppk |
重要 該命令屬于環(huán)境初始化工作,必須執(zhí)行。 |
mds | 將5大存儲(OSS、OSS-HDFS、HDFS、S3、NAS)掛載到ECS本地環(huán)境,對應(yīng)的目錄分別是/ossmnt、/osshdfsmnt、/hdfsmnt、/nasmnt和/s3mnt。 |
creg/dreg | 通過讀取 |
ricrt | 默認(rèn)情況下,k8s的有效期是1年,需重新簽發(fā),有效期為10年。此命令選項(xiàng)僅限on ECS形態(tài)的Data Science集群;on ACK方案需要在控制臺管理。 |
cslb/dslb | 為了配置k8s具有控制SLB的權(quán)限,需要在配置service時(shí)使用。 此命令選項(xiàng)僅限on ECS形態(tài)的Data Science集群。 |
Docker環(huán)境配置
命令選項(xiàng) | 說明 |
dlogin | 執(zhí)行 重要 該命令屬于環(huán)境初始化工作,必須執(zhí)行。 |
dlogout | docker logout,用于執(zhí)行登出操作的。 |
cacr | 檢查ACR的狀態(tài)是否正常,該方法已被棄用。 |
數(shù)據(jù)源
命令選項(xiàng) | 說明 |
moss/uoss | 掛載或卸載OSS到k8s中,OSS配置請參見 |
mosshdfs/uosshdfs | 掛載或卸載OSS-HDFS到k8s中,osshdfs配置請參見 創(chuàng)建OSS Bucket時(shí)并開通授權(quán)訪問OSS-HDFS服務(wù),具體操作請參見開通并授權(quán)訪問OSS-HDFS服務(wù)。 |
mhdfs/uhdfs | 掛載或卸載HDFS到k8s中,hdfs配置見 |
mnas/unas | 掛載或卸載NAS到k8s中,NAS配置見 |
ms3/us3 | 掛載或卸載AWS S3 bucket到k8s中,S3配置見 |
cmts | 查看OSS、OSS-HDFS、HDFS、AWS S3的掛載狀態(tài)。 |
manony | 在anonymous空間掛載OSS、OSS-HDFS、HDFS、AWS S3、NAS等,Kubeflow例行化任務(wù)均運(yùn)行在anonymous空間。 |
uanony | 在anonymous空間卸載OSS、OSS-HDFS、HDFS、AWS S3、NAS等。 |
clnas | 檢查ECS本地掛載NAS的狀態(tài)是否正常。 |
closs | 檢查ECS本地掛載OSS的狀態(tài)是否正常。 |
closshdfs | 檢查ECS本地掛載OSS-HDFS的狀態(tài)是否正常。 |
clhdfs | 檢查ECS本地掛載HDFS的狀態(tài)是否正常。 |
cls3 | 檢查ECS本地掛載AWS S3的狀態(tài)是否正常。 |
模型訓(xùn)練
EasyRec
命令選項(xiàng) | 說明 |
1|build | 構(gòu)建EasyRec訓(xùn)練鏡像。easyrec介紹請參見easyrec。 |
apc|dpc | 提交或刪除EasyRec Precheck任務(wù),可用于在訓(xùn)練之前的基本環(huán)境檢查,例如數(shù)據(jù)分隔符是否正確、字段數(shù)是否匹配等, 建議先做precheck后,再提交訓(xùn)練任務(wù)。 |
2/3 | 提交或刪除EasyRec訓(xùn)練任務(wù)。 |
4/5 | 提交或刪除EasyRec單點(diǎn)評估任務(wù),如需提交或刪除分布式評估任務(wù)請見 |
4d/5d | 提交或刪除EasyRec分布式評估任務(wù)。 |
6/7 | 提交或刪除EasyRec導(dǎo)出任務(wù),將訓(xùn)練過程中產(chǎn)生的Checkpoint導(dǎo)出SavedModel到MODELDIR。MODELDIR變量見config配置,可以是HDFS地址或者是NAS地址。 |
4hr/5hr | 提交或刪除EasyRec Hitrate任務(wù),可以用來查看訓(xùn)練效果。 |
8/9 | 部署或刪除TFServing,讀取MODELDIR中的SavedModel并部署在Data Science中,使用SeldonCore底座。 |
10/11 | 提交或刪除Predict任務(wù),可用于訓(xùn)練測試數(shù)據(jù)批量話Inference。 |
12/13 | 提交或刪除Feature Selection任務(wù),用來查看feature作用大小。 |
14/15 | 提交或刪除EasyRec自定義動作。如果上述選項(xiàng)不能滿足您的需求,您可以嘗試自定義操作。 |
mt/dmt | 提交或刪除多天數(shù)據(jù)訓(xùn)練任務(wù)。該訓(xùn)練任務(wù)可以處理多天的數(shù)據(jù),其起止日期由config文件中的START_DATE和END_DATE指定,閉區(qū)間。起止日期之間的所有數(shù)據(jù)都會被用于訓(xùn)練。 |
me/dme | 提交或刪除多天數(shù)據(jù)評估任務(wù)。該評估任務(wù)可以處理多天的數(shù)據(jù),其起止日期由config文件中的START_DATE和END_DATE指定,閉區(qū)間。起止日期之間的所有數(shù)據(jù)都會被用于評估。 |
ctb/dtb/DTBA/stb | 創(chuàng)建、刪除、刪除所有、查看TensorBoard,EasyRec訓(xùn)練過程中可以創(chuàng)建TensorBoard實(shí)例來查看訓(xùn)練效果,loss曲線等。 |
sh daybydaytrain.sh | 可以串行地為每一天的數(shù)據(jù)啟動訓(xùn)練任務(wù),并在正常結(jié)束后啟動下一天的訓(xùn)練任務(wù),起止日期由config文件中的START_DATE和END_DATE指定。此工具可方便您訓(xùn)練歷史數(shù)據(jù)。 |
Serving
命令選項(xiàng) | 說明 |
8/9 | 部署或刪除tfserving,讀取MODELDIR中的SavedModel并部署在Data Science中,使用SeldonCore底座。 |
TensorFlow
命令選項(xiàng) | 說明 |
24/25 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example1。 |
26/27 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example2。 |
28/29 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example3。 |
30/31 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example4。 |
32/33 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example5,使用ps worker模式。example5對應(yīng)使用的文件為 |
34/35 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example6,使用ps worker模式。example6對應(yīng)使用的文件為 |
36/37 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example7,使用ps worker模式。example7對應(yīng)使用的文件為 |
38/39 | 提交或刪除純TensorFlow訓(xùn)練任務(wù)example8,使用allreduce模式。example8對應(yīng)使用的文件為 |
btfi | 構(gòu)建TensorFlow鏡像,并上傳到ACR。 |
PyTorch
命令選項(xiàng) | 說明 |
40/41 | 提交或刪除基于純PyTorch框架、CPU后端的訓(xùn)練任務(wù)。 |
42/43 | 提交或刪除基于純PyTorch框架、Gloo-GPU后端的訓(xùn)練任務(wù)。 |
44/45 | 提交或刪除基于純PyTorch框架、NCCL-GPU后端的訓(xùn)練任務(wù)。 |
bpti | 構(gòu)建PyTorch鏡像,并上傳到ACR。 |
DeepSpeed
命令選項(xiàng) | 說明 |
18/19 | 提交或刪除基于Deepspeed-std框架的任務(wù),可用于大型模型的訓(xùn)練等,建議與多機(jī)多卡配合使用。 |
bdsi | 構(gòu)建Deepspeed鏡像,并上傳到ACR。 |
DeepFace
命令選項(xiàng) | 說明 |
cdf/ddf/sdf | 創(chuàng)建或刪除Deepface實(shí)例,該實(shí)例將運(yùn)行VNC服務(wù)器,您需要通過VNC Viewer連接。如果當(dāng)前ECS裝有GPU,則您也可以通過在本地Docker運(yùn)行的 |
ChatGLM
命令選項(xiàng) | 說明 |
20/21 | 提交或刪除基于Deepspeed-GLM框架的任務(wù)。GLM詳情請參見GLM。 |
22/23 | 提交或刪除基于Deepspeed-ChatGLM框架的任務(wù)。Chatglm-6B詳情請參見ChatGLM-6B。 |
bdsi | 構(gòu)建Deepspeed鏡像,并上傳到ACR。 |
StableDiffusion
命令選項(xiàng) | 說明 |
csdb/dsdb/ssdb | 創(chuàng)建、刪除或查看StableDiffusion底座。 |
csd/dsd/ssd | 創(chuàng)建、刪除或查看StableDiffusion-Front。 |
bsdi | 構(gòu)建StableDiffusion鏡像,并上傳到ACR。 |
TagText
命令選項(xiàng) | 說明 |
ctt/dtt/stt | 創(chuàng)建、刪除或查看Tag2Text。 |
btti | 構(gòu)建Tag2Text鏡像,并上傳到ACR。 |
TuGraph
命令選項(xiàng) | 說明 |
ctg/dtg/stg | 創(chuàng)建、刪除或查看TUGraph實(shí)例,并顯示TUGraph連接。 |
btgi | 構(gòu)建TUGraph鏡像,并上傳到ACR。 |
Wandb
命令選項(xiàng) | 說明 |
cwd/dwd/swd | 創(chuàng)建、刪除或查看Wandb實(shí)例,并顯示W(wǎng)andb連接。 |
bwdi | 構(gòu)建Wandb鏡像。 |
訓(xùn)練工具
Tensorboard
僅限checkpoint存放于hdfs://xxx
的地址,例如ckpt存放于OSS-HDFS、NAS等。您可以自行修改run_tensorboard.sh
腳本,調(diào)整相應(yīng)參數(shù)。
cd /root/dsdemo/ml_on_ds
#查看20211209訓(xùn)練ckpt的Tensorboard信息。
sh run_tensorboard.sh 20211209
編譯Pipeline
命令選項(xiàng) | |
mp|mpl | 創(chuàng)建一個(gè)名為 |
ppl | 將pipelines文件夾中的所有 |
wfl | 構(gòu)建pipeline目錄下的多個(gè)Workflow文件(*.json),生成的TAR文件可以交由Kubeflow運(yùn)行。 |
bu | 上傳bigdata目錄到NAS或HDFS中。 |
數(shù)據(jù)開發(fā)
Notebook(Jupyter,Jupyter-lab)
命令選項(xiàng) | 說明 |
cnt/dnt/snt | 創(chuàng)建、刪除或查看Notebook,該Notebook默認(rèn)使用Python 3.7環(huán)境。 如果需要使用Python 3.6、Python 3.10或支持GPU的Python 3.8環(huán)境,可以按照以下步驟操作。
|
bnt | 構(gòu)建Notebook鏡像,并上傳到ACR。 |
VScode
命令選項(xiàng) | 說明 |
cvs/dvs/svs | 創(chuàng)建、刪除或查看VSCode。 |
bvsi | 構(gòu)建VSCode鏡像,并上傳到ACR。 |
Hue
命令選項(xiàng) | 說明 |
che/dhe/she | 創(chuàng)建、刪除或查看Hue實(shí)例,以及查看Hue的鏈接。 |
bhi | 構(gòu)建Hue鏡像,并上傳到ACR。 |
制作鏡像
Ray
命令選項(xiàng) | 說明 |
brayi | 構(gòu)建Ray鏡像,并上傳到ACR。 |
JAX
命令選項(xiàng) | 說明 |
bjaxi | 構(gòu)建JAX鏡像,并上傳到ACR。 |
Httpd
命令選項(xiàng) | 說明 |
bhdi | 構(gòu)建Httpd鏡像,并上傳到ACR。 |
chd/dhd/shd | 創(chuàng)建、刪除或查看Httpd實(shí)例,以及查看Httpd的鏈接。 |
Hive
命令選項(xiàng) | 說明 |
bhvi | 構(gòu)建Hive鏡像,并上傳到ACR。 |
Postgis
命令選項(xiàng) | 說明 |
bpsi | 構(gòu)建Postgis鏡像,并上傳到ACR。 |
創(chuàng)建Gateway
命令選項(xiàng) | 說明 |
iemrcli | 安裝EMRCLI工具。該命令選項(xiàng)僅限在on ACK形態(tài)使用。 |
demrcli | 使用EMRCLI工具可以將EMR Hadoop、Spark等環(huán)境部署到Gateway機(jī)器上,從而使得Gateway機(jī)器不僅可以提交AI任務(wù)到K8s,還可以操作Hadoop集群進(jìn)行特征工程、ETL等操作。該命令選項(xiàng)僅限在on ACK形態(tài)使用。 |
其他
Pai-Rec
命令選項(xiàng) | 說明 |
spl | 查看Pai-Rec鏈接。 |
Milvus
命令選項(xiàng) | 說明 |
sml | 可以查看Milvus的鏈接,是一款開源的向量工具。詳情請參見milvus。 |
常用工具
命令選項(xiàng) | 說明 |
buildall | 可以構(gòu)建相關(guān)鏡像,包括EasyRec、TensorFlow、PyTorch、DeepSpeed、StableDiffusion和Notebook等。 |
a | 查看TensorFlow作業(yè)。 |
b | 查看已部署的Serving實(shí)例。 |
c | 查看PyTorch作業(yè)。 |
tb | 運(yùn)行TensorBoard,僅限MODELDIR以 |
logs | 查看Pod日志。 |
setnl | 為k8s的nodes節(jié)點(diǎn)打標(biāo)簽,分別為core和task。此功能在老版本ds上使用, on ack方案不適用 |
tp | 查看Pod使用資源情況。命令為 |
tn | 查看node資源使用情況。命令為 |
util | 查看所有node的CPU和內(nèi)存的請求或限制情況。 |
e|clean | 清除本地冗余文件。 |
cleanall | 清除本地以及子目錄冗余文件。 |
99 | 列出所有正在運(yùn)行的Pod。命令為 |
99l | 列出所有正在運(yùn)行的Pod,并為每個(gè)Pod生成一個(gè)查看Log的鏈接。 |
sall | 查看多個(gè)底座軟件的鏈接、文檔等。 |
bdci | 構(gòu)建dscontroller鏡像,并上傳到ACR。 |
bci | 構(gòu)建customize鏡像,并上傳到ACR。 |
bfsi | 構(gòu)建faissserver鏡像,并上傳到ACR,以及構(gòu)建dscontroller鏡像并上傳到ACR。 |
vc | 驗(yàn)證 |
SFTP
命令選項(xiàng) | 說明 |
cft/dft/sft | 創(chuàng)建、刪除或查看SFTP實(shí)例,以及查看SFTP的鏈接。 |
bfti | 構(gòu)建SFTP鏡像,并上傳到ACR。 |
常見問題
為什么每個(gè)實(shí)驗(yàn)需要配置獨(dú)立Experiments?
為了實(shí)現(xiàn)實(shí)驗(yàn)隔離,在每個(gè)實(shí)驗(yàn)中,使用Experiments可以實(shí)現(xiàn)完全隔離,包括PV、PVC、鏡像等,互不干擾,但仍然可以共享Kubernetes資源池。
allinone.sh設(shè)計(jì)原則是什么?
通過命令選項(xiàng),allinone.sh
可以將Data Science的所有功能呈現(xiàn)出來,使得用戶只需要按照以下步驟操作即可使用:
填寫
config
文件。選擇相應(yīng)的選項(xiàng)。
獲取鏈接。
該方式最大限度地降低了使用門檻。
dsdemo是否開源?
目前,dsdemo不是開源項(xiàng)目,但是我們會向付費(fèi)客戶提供100%源代碼,并簽署NDA(Non Disclosure Agreement)協(xié)議,以保障客戶深入研究Data Science的權(quán)利,同時(shí)也保障EMR團(tuán)隊(duì)的知識產(chǎn)權(quán)。
是否可以對EasyRec框架進(jìn)行修改或添加算法?
可以。您可以獲取EasyRec的代碼并在本地進(jìn)行修改,并編譯鏡像進(jìn)行訓(xùn)練。您無需重新打包即可進(jìn)行訓(xùn)練。可以參見ml_on_ds/easyrec/readme
文件。
Data Science是否支持離在線混部?
支持。可以對節(jié)點(diǎn)池機(jī)型打標(biāo)或設(shè)置污點(diǎn),從物理節(jié)點(diǎn)層面隔離離線任務(wù)和在線serving的Pod。這樣,serving提供的SLB IP的請求只會轉(zhuǎn)發(fā)到serving的節(jié)點(diǎn),對延遲沒有明顯影響。
掛載存儲服務(wù)是否收費(fèi)?
建議您在構(gòu)建Data Science集群時(shí),也開通OSS、OSS-HDFS、NAS等存儲服務(wù)。這些服務(wù)在不存儲數(shù)據(jù)的情況下不收取費(fèi)用,并且具有很高的靈活性。
是否支持小時(shí)級數(shù)據(jù)訓(xùn)練?
支持。
是否支持流式訓(xùn)練?
支持。可以將數(shù)據(jù)可以存放在Kafka或DataHub中。
JupyterLab是否支持Jupyter Notebook?
支持。
Notebook是否支持GPU環(huán)境,即在Notebook運(yùn)行一些GPU任務(wù)?
支持。
是否可以在K8s中運(yùn)行DeepSpeed任務(wù)?
支持。
為什么運(yùn)行kubectl get pods
命令時(shí),部分Pod的狀態(tài)為Pending?
可以執(zhí)行命令kubectl describe pods xx
, 查看Pending的原因。