SKIL/工作流程/命令行

命令行 (CLI)

SKIL带有一个内置的命令行界面(CLI),用于高级设置和管理任务。有时,你需要用特殊变量手动实例化一个进程,或者编写一个定制的shell脚本来管理你自己的SKIL应用程序—CLI对这些任务很有用。

SKIL命令
SKIL命令是一个python包装器,通常位于/opt/skil/sbin中,如果你已经使用RPM分发文件或docker安装了它。你可以将/opt/skil/sbin添加到你的path环境变量中,并在任意位置使用skil命令或cd 进入/opt/skil/sbin中,然后使用 ./skil运行该命令。
执行./sbin/skil将给出以下输出:

bash-4.2$ ./sbin/skil
SKIL_HOME not set. Using directory: /opt/skil
SKIL_CLASS_PATH not set. Using: /opt/skil/lib/*:/opt/skil/native/*:/opt/skil/jackson-2.5.1/*
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/skil/lib/zeppelin-spark_2.10-0.7.3_skil-1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/skil/lib/slf4j-log4j12-1.7.19.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/skil/lib/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Please login first with skil login --userId username --password password
usage: skil.py [-h] [--host HOST] [--port PORT]
              {npm,modelhistory,processes,inference,pkill,agents,nearestneighbor,parameter_server_master,media_driver,zeppelinInterpreter,addplugin,parameter_server_slave,ui,zeppelin,services,datavec,spark,arbiter,parallelwrapper,loadbalancer,login}
               ...
skil.py: error: too few arguments

image.gif

请注意,你需要验证你的SKIL客户端。每个SKIL命令的可选参数包括定义自定义端口和主机(如果SKIL服务器没有在默认位置上监听)。如果是这种情况,则可以在使用每个命令时添加这些命令:

$ ./sbin/skil --host 192.168.1.1 --port 9008 {这里是命令}
image.gif

可用命令
SKIL CLI公开了与管理流程、执行推理、设置并行包装器(用于模型训练)相关的命令列表。其中大多数命令用于启动特定的服务,以及定义服务的端口和自定义名称。
请注意,你可以分别使用/skil processes和/skil services命令列出现有流程和服务。

| 命令 | 标记 | 备注 |
| modelhistory |

[--userName USERNAME]                            
[--modelHistoryPort MODELHISTORYPORT]
[--password PASSWORD] 
[--name NAME]
[--dbPort DBPORT] 
[--jvmArgs JVMARGS]
[--agentId AGENTID] 
[--dbName DBNAME]
[--dbPath DBPATH]
image.gif

|

SKIL在启动时创建默认的模型历史服务器。你可以创建一个单独的模型历史服务器来隔离部门或项目之间的模型。

|
| processes |
| 为监视目的返回所有正在运行的进程的JSON表示。 |
| inference |

[--batchLimit BATCHLIMIT]
[--queueLimit QUEUELIMIT] 
[--name NAME]
[--inputNames INPUTNAMES] 
[--jvmArgs JVMARGS]
[--workers WORKERS] 
[--inferenceMode INFERENCEMODE]
[--modelHistoryServerUrl MODELHISTORYSERVERURL]
[--predictServerPort PREDICTSERVERPORT]
[--outputNames OUTPUTNAMES] 
[--agentId AGENTID]
[--modelUri MODELURI]
image.gif

| 创建独立模型服务器。SKIL的部署功能在底层下使用此命令。你可以将此命令用于高级部署方案。 |
| pkill | [--id [enter a process ID]] | 这将从ZooKeeper中删除一个进程和它的配置,以便在启动时不再恢复它。默认的模型历史服务器或默认的Zeppelin进程将仍然被重新创建,除非它们被禁用。你应该只在使用CLI创建的进程上使用pkill。 |
| agents |
| 返回群集中代理的列表 |
| nearestneighbor |

[--name NAME] 
[--jvmArgs JVMARGS]
[--labelsPath LABELSPATH]
[--ndarrayPath NDARRAYPATH]
[--nearestNeighborsPort NEARESTNEIGHBORSPORT]
[--similarityFunction SIMILARITYFUNCTION]
[--agentId AGENTID] [--invert INVERT]
image.gif

| 在部署之外启动独立的KNN服务器。对于高级部署方案很有用。 |
| zeppelinInterpreter |

[--zeppelinInterpreterDir ZEPPELININTERPRETERDIR]
[--name NAME] 
[--jvmArgs JVMARGS]
[--interpreterPort INTERPRETERPORT]
[--zeppelinHome ZEPPELINHOME]
[--agentId AGENTID]
image.gif

| 启动一个新的zeppelin解释器进程skil创建一个默认的zeppelin服务器和zeppelin解释器进程,但是你可以添加更多,使用此命令为特定的团队成员添加其他服务器,或者运行长时间运行的预处理或训练作业。
Zeppelin解释器进程需要启动和运行Zeppelin服务器进程。 |
| addplugin | [enter path to plugin JAR] | 上传插件JAR文件。主要用于自定义转换过程步骤或为Spark或并行包装作业定义DataSetProvider类。 |
| ui |

[--jvmArgs JVMARGS] 
[--enableRemote ENABLEREMOTE]
[--agentId AGENTID] 
[--name NAME] 
[--uiPort UIPORT]
image.gif

| 启动用于可视化模型训练过程的DL4J UI服务器。在笔记本内为StatsListener指定--uiport值以跟踪模型性能。 |
| zeppelin |

[--zeppelinInterpreterDir ZEPPELININTERPRETERDIR]
[--name NAME] [--zeppelinBinDir ZEPPELINBINDIR]
[--jvmArgs JVMARGS]
[--zeppelinPassword ZEPPELINPASSWORD]
[--zeppelinConfDir ZEPPELINCONFDIR]
[--zeppelinPort ZEPPELINPORT]
[--zeppelinMemory ZEPPELINMEMORY]
[--zeppelinWarDir ZEPPELINWARDIR]
[--zeppelinNotebookDirectory ZEPPELINNOTEBOOKDIRECTORY]
[--deleteInterpreterRepoOnStartup DELETEINTERPRETERREPOONSTARTUP]
[--master MASTER]
[--zeppelinUserName ZEPPELINUSERNAME]
[--zeppelinLogFile ZEPPELINLOGFILE]
[--zeppelinHost ZEPPELINHOST]
[--zeppelinHome ZEPPELINHOME]
[--interpreterPort INTERPRETERPORT]
[--agentId AGENTID]
[--zeppelinLocalRepo ZEPPELINLOCALREPO]
image.gif

| 启动一个新的zeppelin服务器进程。skil创建一个默认的zeppelin服务器和zeppelin解释器进程,但是你可以使用此命令为特定的团队成员添加其他服务器,或者运行长时间运行的预处理或训练作业来添加更多服务器。一旦创建了一个Zeppelin服务器进程,你需要创建一个或多个Zeppelin解释器进程来评估笔记本。 |
| services |
|
|
| datavec |

[--name NAME] 
[--dataType DATATYPE]
[--jvmArgs JVMARGS] 
[--jsonPath JSONPATH]
[--agentId AGENTID] 
[--dataVecPort DATAVECPORT]
image.gif

| 启动独立的转换进程服务器。对于高级部署方案很有用。 |
| spark |

[--modelHistoryId MODELHISTORYID] 
[--status STATUS]
[--verbose VERBOSE]
[--total-executor-cores TOTAL_EXECUTOR_CORES]
[--driver-class-path DRIVER_CLASS_PATH] 
[--uiUrl UIURL]
[--driver-memory DRIVER_MEMORY] 
[--kill KILL]
[--class CLASS] 
[--multiDataSet MULTIDATASET]
[--principal PRINCIPAL] 
[--agentId AGENTID]
[--numEpochs NUMEPOCHS] 
[--batchSize BATCHSIZE]
[--deploy-mode DEPLOY_MODE]
[--driver-library-path DRIVER_LIBRARY_PATH]
[--outputPath OUTPUTPATH] 
[--num-executors NUM_EXECUTORS]
[--modelPath MODELPATH] 
[--master MASTER]
[--evalDataSetProviderClass EVALDATASETPROVIDERCLASS]
[--driver-cores DRIVER_CORES] 
[--jars JARS]
[--executor-memory EXECUTOR_MEMORY] 
[--files FILES]
[--keytab KEYTAB] 
[--properties-file PROPERTIES_FILE]
[--trainingMasterPath TRAININGMASTERPATH]
[--supervise SUPERVISE] 
[--queue QUEUE]
[--packages PACKAGES]
[--exclude-packages EXCLUDE_PACKAGES]
[--doInference DOINFERENCE]
[--modelInstanceId MODELINSTANCEID] 
[--name NAME]
[--proxy-user PROXY_USER] 
[--jvmArgs JVMARGS]
[--evalType EVALTYPE] 
[--repositories REPOSITORIES]
[--modelHistoryUrl MODELHISTORYURL]
[--dataSetProvider DATASETPROVIDER]
[--driver-java-options DRIVER_JAVA_OPTIONS]
image.gif

| 使用dl4j在spark上启动一个数据并行模型训练作业。此命令创建一个包含skil所有依赖项的uberjar,并使用指定的spark home启动作业。要使用此命令,只需使用笔记本创建一个模型,将其保存到磁盘或HDF,上传一个插件jar,该插件jar具有一个DataSetProvider 子类,该子类用于提取和向量化数据集,并运行此命令指定类名和模型路径。 |
| parallelwrapper |

[--modelHistoryId MODELHISTORYID]
[--reportScore REPORTSCORE]
[--multiDataSet MULTIDATASET] 
[--name NAME]
[--modelOutputPath MODELOUTPUTPATH]
[--averagingFrequency AVERAGINGFREQUENCY]
[--jvmArgs JVMARGS] 
[--workers WORKERS]
[--uiUrl UIURL]
[--dataSetIteratorFactoryClazz DATASETITERATORFACTORYCLAZZ]
[--modelHistoryUrl MODELHISTORYURL]
[--averageUpdaters AVERAGEUPDATERS]
[--legacyAveraging LEGACYAVERAGING]
[--modelPath MODELPATH]
[--prefetchSize PREFETCHSIZE]
[--evalDataSetProviderClass EVALDATASETPROVIDERCLASS]
[--agentId AGENTID] 
[--evalType EVALTYPE]
[--multiDataSetIteratorFactoryClazz MULTIDATASETITERATORFACTORYCLAZZ]
image.gif

| 使用dl4j在多个GPU上启动一个数据并行模型训练作业。要使用此命令,只需使用笔记本创建一个模型,将其保存到磁盘或HDF,上传一个插件jar,该插件jar具有一个DataSetIteratorFactory子类,用于获取和向量化数据集,并运行此命令指定类名和模型路径。 |
| loadbalancer |

[--jvmArgs JVMARGS] 
[--agentId AGENTID]
[--name NAME] 
[--urls URLS]
[--loadBalancePort LOADBALANCEPORT]
image.gif

| 创建一个简单的负载均衡器,在使用独立模型、转换和KNN服务器时,将请求路由到指定URL,对高级部署方案有用。 |
| login |

[--userId USERID] 
[--password PASSWORD]
image.gif

| 登录skil并将令牌保存到主目录中。
省略--password参数以交互方式输入它。 |

下面的命令不推荐使用或是测试命令,但为了完整性,这里对它们进行了说明。

| 命令 | 状态 | 标记 | 备注 |
| npm | 过期 |

[--jvmArgs JVMARGS] 
[--agentId AGENTID] 
[--name NAME] 
[--moduleName MODULENAME] 
[--npmHome NPMHOME]
image.gif

| 这是一个用于开发的命令,将在以后的版本中删除。 |
| parameter_server_master | alpha |

[--aeronDirectory AERONDIRECTORY]
[--name NAME] 
[--jvmArgs JVMARGS]
[--parameterServerAeronPort PARAMETERSERVERAERONPORT]
[--shape SHAPE] 
[--streamId STREAMID]
[--parameterServerStatusPort PARAMETERSERVERSTATUSPORT]
[--agentId AGENTID]
image.gif

| 创建一个参数服务器,用于在非常大的Hadoop集群上加速Spark训练。 |
| media_driver | alpha |

[--jvmArgs JVMARGS]
[--aeronDirectory AERONDIRECTORY]
[--agentId AGENTID] 
[--name NAME]

image.gif

| 创建用于在Spark训练作业中共享权重的服务器。用于非常大的Hadoop集群。 |
| parameter_server_slave | alpha |

[--aeronDirectory AERONDIRECTORY]
[--name NAME] 
[--jvmArgs JVMARGS]
[--parameterServerAeronPort PARAMETERSERVERAERONPORT]
[--shape SHAPE] 
[--masterUrl MASTERURL]
[--streamId STREAMID]
[--parameterServerStatusPort PARAMETERSERVERSTATUSPORT]
[--agentId AGENTID]
image.gif

| 创建参数服务器,用于在Spark训练作业中共享权重。用于非常大Spark集群,以优化机架顶部网络带宽。 |
| arbiter | alpha |

[--regressionType REGRESSIONTYPE]
[--dataSetIteratorClass DATASETITERATORCLASS]
[--name NAME] 
[--jvmArgs JVMARGS]
[--problemType PROBLEMTYPE]
[--neuralNetType NEURALNETTYPE]
[--modelSavePath MODELSAVEPATH] 
[--agentId AGENTID]
[--optimizationConfigPath OPTIMIZATIONCONFIGPATH]
image.gif

| 启动用于神经网络超参数搜索的arbiter服务器。 |

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容