小技巧

本教程汇总了一些实用的小技巧,可以帮助用户更好地使用平台。

让 Notebook 不被资源回收

如果想要让 Notebook 不被资源回收,可以在该 Notebook 中创建一个 Jupyter Notebook,并运行以下代码:

# To keep the kernel active
import time

while True:
    time.sleep(60)

上述代码使 Notebook 保持活跃状态,而又不占用额外的计算资源。如要恢复对该 Notebook 的资源回收,只需停止上述代码的运行即可。

在终端中获取资源帮助

在创建、查看或调试 Kubernetes API 资源(包括 Kubernetes 原生资源和平台提供的 CRD)时,我们需要了解资源有哪些字段以及它们的含义。要获取这些信息,一种方法是查阅相应的参考文档,但更便捷的方式是在终端使用 kubectl explain 命令:

# 获取资源及其字段的描述
kubectl explain pod

# 获取资源的指定字段及其子字段的描述
kubectl explain pod.spec.containers

# 获取资源的所有子字段
kubectl explain pod --recursive

例如现在我们想要启用 DeepSpeedJob 的调试模式,但不知道该如何编写 YAML 配置文件,那么可以在 Notebook 的终端中执行以下命令:

kubectl explain dj --recursive    # `dj` 是 DeepSpeedJob 的简称

输出应类似于:

KIND:     DeepSpeedJob
VERSION:  batch.tensorstack.dev/v1beta1

DESCRIPTION:
     DeepSpeedJob defines the schema for the DeepSpeedJob API.

FIELDS:
   ...
   spec <Object>
      ...
      runMode   <Object>
         debug  <Object>
            enabled     <boolean>
            replicaSpecs        <[]Object>
               command  <[]string>
               skipInitContainer        <boolean>
               type     <string>
         pause  <Object>
            enabled     <boolean>
            resumeSpecs <[]Object>
               args     <[]string>
               command  <[]string>
               skipInitContainer        <boolean>
               type     <string>
      ...
   ...

由此我们得以写出正确的配置:

apiVersion: batch.tensorstack.dev/v1beta1
kind: DeepspeedJob
metadata:
  name: deepspeed-example
spec:
  runMode:
    debug:
      enabled: true
  ...

查看容器的日志

查看 Pod 中的容器的日志有两种方法。第一种方法是在终端使用 kubectl logs 命令:

# 首先列举所有 Pod
kubectl get pod

# 返回指定 Pod 的(唯一容器的)日志快照
kubectl logs nginx

# 持续输出日志
kubectl logs -f nginx

# 返回日志的最后 20 行
kubectl logs --tail=20 nginx

# 返回最近 1 个小时的日志
kubectl logs --since=1h nginx

第二种方法是在控制台中查看。进入模型构建控制台,在左侧的导航菜单中点击构建 > Pod 进入 Pod 管理页面,然后点击 Pod 的名称进入详情页面:

list

点击日志右侧的按钮即可查看日志:

details
log

此外,部分 CRD 所创建的 Pod 的容器日志也可以从相应 CRD 的详情页面查看,请参阅: