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服务器。 |