数据在ML中很重要。将数据加载到ML模型有若干种方法,取决于你在本地还是云端运行、数据集大小和安全需求。Determined支持多种数据访问方法。
本教程讨论Determined访问数据的3种方法:
- 对象存储:存储在对象存储的数据,如亚马逊。
- 分布式文件系统:存储在分布式文件系统(如NFS或Ceph)上的数据。
- 小数据:可作为模型definition的一部分上传。
对象存储
略。分布式文件系统
存储数据的另一种方法是使用分布式文件系统,该系统使一组计算机能够通过熟悉的POSIX文件系统界面访问共享数据集。亚马逊的弹性文件系统和谷歌的云文件存储是云环境中可用的分布式文件系统示例。对于本地部署,流行的分布式文件系统包括Ceph(我们使用的)、GlusterFS和NFS。
如需访问分布式FS,首先确保FS挂载在了每个Determined agent上的相同挂载点。对于云部署,略。
下一步,需确保每个实验容器可访问FS。可通过在实验配置文件里配置bind mount实现。每个bind mount包含一个host_path
和一个container_path
;host path指定分布式FS已挂载在agent上的绝对路径,而container path指定容器内文件系统的相对路径,用于在代码里访问。
为避免混淆,你一定希望将两者设置为相等。你还会希望为每个bind mount设置read_only
为true
,确保数据集不会被代码修改。
下面的示例为分布式FS每个agent配置挂载点/mnt/data
。为了访问它,编辑一个如下所示的实验配置文件:
然后,我们的模型定义代码可以访问bind_mounts:
- host_path: /mnt/data
container_path: /mnt/data
read_only: true
/mnt/data
目录中的数据: ```python def build_training_data_loader(self): return make_data_loader(data_path=”/mnt/data/training”, …)
def build_validation_data_loader(self): return make_data_loader(data_path=”/mnt/data/validation”, …)
<a name="VxqUg"></a>
# 小数据(嵌入在模型定义中)
每个实验将指定一个[模型定义](https://www.yuque.com/rayiooo/determined/omqhoh)文件夹。其必须包含模型代码,但也可包含其他文件,如数据集,但不能超过96MB,所以仅适用于数据集较小的情况。<br />例如,下面的模型定义目录包含模型定义、一个实验配置文件和一个CSV数据文件。这三个文件都很小,因此目录的总大小远远小于96MB的限制:
. ├── const.yaml (0.3 KB) ├── data.csv (5 KB) └── model_def.py (4.1 KB)
使用命令提交数据和模型:
```bash
det create experiment const.yaml .
Determined将模型定义文件夹上传到实验容器中。模型代码可访问目录中任何文件,如通过相对路径访问(model definition目录就是每个实验容器的初始工作目录)。
例如,下述代码使用Pandas加载data.csv
至DataFrame中:
df = pandas.read_csv("data.csv")
后续步骤
- 实验配置
- Determined任务配置
- Yaml