企业分析平台常见问题

智能实验室常见问题

有关智能实验室的常见问题如下:

问:在 Notebook 中访问 HDFS/HIVE 中的数据,需要哪些准备工作?

答:在 Notebook 中访问 HDFS/HIVE 中的数据,需完成以下准备:

  1. 通过 资源管理 页面申请容器计算资源时,选择 “启用HDFS、数据仓库的数据读取权限”。
  2. 通过 企业分析平台 > 资源配置 > 存储配置 页面添加存储时,使用已启用 HDFS 和数据仓库的数据读写权限的资源池,同时指定使用模块为 Lab 的存储。
  3. 在新建 Notebook 实例时,选择 spark 或 pyspark 镜像(目前只有这两个镜像有Java运行环境),同时在数据存储部分选择 挂载Hadoop PVC 选项。
  4. 打开 Jupyter Notebook,在 Terminal 中输入 kinit -kt /etc/security/keytab/data_xxxxx data_xxxxx@ENIOT.IO (xxxxx为对应的OU帐号),更新 Ticket。

问:如何使用 Python 从 HIVE 中获取大量数据做模型训练?

答:数据量不太大的情况下,可以使用 pyhive。数据量大时,可以考虑直接获取 HDFS 文件到本地后做处理。可通过 HIVE SQL 将数据处理后压缩成 ORC 格式的文件,然后再使用 pyarrow 包处理 ORC 文件。

问:在 Notebook 里如何实现协作共享?

答:在不同的 Notebook 实例中,可通过挂载相同的 PVC 存储实现协作共享。

问:在 Notebook 里切换环境或其它操作后导致内核无法正常启动,应该如何解决?

答:可在 Terminal 中运行 python3 -m ipykernel install --user 命令恢复。

问:在 Notebook 里是否可以添加新的 Kernel?

答:可以,参考使用以下命令:

conda create -n py36-test python=3.6
source activate py36-test
conda install ipykernel
python -m ipykernel install --name py36-test
conda deactivate

问:为什么我的 Notebook 在使用一段时间后,每次打开 Notebook 实例会变慢?

答:Notebook 实例打开后,可能会创建并打开 Kernel Session 或 Terminal Session。关闭 Notebook 后,这些 Session 并不会自动关闭,便于在下次进入 Notebook 时,可以直接从 Session 里恢复。请手动关闭不再使用的 Session。

问:在 Notebook 里手动安装了一些包后,出现包依赖的问题。如何恢复到最初创建 Notebook 实例时的状态?

答:在 Notebook 菜单中,选择 File > Shut Down,关闭 Notebook 页面后,再重新进入 Notebook 即可。

智能集市常见问题

有关智能集市的常见问题如下:

问:在调用模型服务API过程中,如果输入传参数据量大或模型计算时间长会导致访问API的 timeout 报错,应该如何解决?

答:在部署模型版本实例的画布中,可以对访问模型服务 API 设置 timeout 时限,最大可设置 600000ms 的时长。用户在编辑模型时可以修改该参数。

问:使用 MLflow 1.10.0 版本时,会出现兼容性问题,导致模型版本不能成功上架。应该如何解决?

答:企业分析平台默认在智能集市和智能实验室中集成了 MLflow 1.8 版本。如果用户自行升级 MLflow 到 1.10.0 版本或在外部模型开发过程使用高版本的 MLflow,一定需要使用 MLflow 1.8 以下版本的 artifacts 文件才能上架模型版本。

问:通过智能集市部署的模型服务地址只能从集群内部调用。跨集群环境下,如何调用部署模型提供的服务?

答:如需对外使用部署模型提供的服务,需要将服务挂载到 EnOS APIM 上,以提供鉴权、流控等管理功能。在外部集群使用模型服务地址时,一定要经过 EnOS APIM 挂载,将内部地址转换成外部调用地址。有关 EnOS APIM 的详细信息,参见 有关API管理

问:调用模型服务的过程中,可使用鉴权的范围是什么?

答:在调用 EAP 模型服务时,尽可能在非 Seldon SDK 的方式下使用鉴权功能。考虑到是内部调用,所以不对内部调用的 REST 和 GRPC 进行鉴权控制。

问:每次调用模型服务的时间长短不一,该如何改善调用时间的稳定性?

答:可以尝试增大部署模型时的内存需求,通过 Postman 请求模型进行测试。

智能任务流常见问题

有关智能任务流的常见问题如下:

问:企业分析平台的智能任务流产品和企业数据平台的任务流都有调度功能,二者的区别是什么?

答:企业数据平台的批数据处理任务流用于对数据的同步和数据的加工处理。目前支持结构化数据的同步及处理、文件的同步、及基于大数据平台或基于 Shell 和 Python 的加工处理等。面向的对象是数据工程师。

企业分析平台的智能任务流用于机器学习的整个生命周期管理,包括数据准备处理、模型训练、模型上架和上线、模型的预测等。面向对象是数据科学家。

问:运行时,针对高并发的情况是如何控制并发度的?

答:任务流可通过以下方法分级控制并发度:

  • 通过运行时最大并发数的设置,可控制每个任务流同一时刻的最大run的数量
  • 通过任务流的高级本置参数 “最大pod数量”,可控制单个任务流的最大并发pod数
  • 通过在 ParallelFor 算子里的并发数设置,可控制 ParallelFor 对应item的并发数
  • 通过 ParallelFor 算子里最大pod数量的设置,可控制 ParallelFor 下对应算子的并发度。

通发以上4个参数的控制,可以实现对整个任务流从run到pod的精细控制。

问:任务流算子之间是否可以传递数据?

答:可以。可以通过 File 或 Directory 类型算子的参数传递数据。

问:任务流中某个算子运行出错后,是否支持从出错处运行?

答:支持。在任务流运行实例详情页面,点击 重试 即可。需要注意的是:重试只针对偶发错误,如果报错后修改了算子的参数配置,重试时并不生效。其次任务流有超时设置,一旦超过了超时设置的时间,重试无效。

问:如何查看任务流运行时的资源使用情况?

答:可在任务流运行实例详情中查看 pod 名称,然后根据 pod 名称在 Grafana 里查看监控 pod 运行资源的占用情况。

资源管理常见问题

问:通过 资源管理 申请的资源是怎样对应到企业分析平台的?为什么会有请求值和上限值两种?

答:通过 资源管理 申请的资源请求值和上限值对应的是资源池的配额,企业分析平台在该资源池下的系统组件运行,模型服务,Notebook实例和算子运行等的资源消耗总和不得超过此配额。 请求值是容器使用的最小资源需求,作为容器调度时资源分配的判断依据。只有当 Pod 上可分配资源量大于或等于容器资源请求值时才允许将容器调度到该节点。上限值是容器能使用资源的最大值,配置上限值可以防止某个 Pod 无限制地使用资源,导致其他 Pod 崩溃。更多信息可参考Kubernetes文档