
256
|
第
6
章
行的这种变换和推理期间将执行的变换保持一致是至关重要的。变换模式有助于确
保这种可复现性。
对于图像模型,有一些变换(例如通过随机裁剪和缩放实现的数据增强)只在训练
期间使用。这些变换在推理过程中不需要实施。这些变换不是变换模式的一部分。
交替模式方法
解决训练-服务偏斜问题的另一种方法是采用特征仓库模式。特征仓库包括一个协
调的计算引擎和变换特征数据存储库。计算引擎支持低延迟访问,用于推理和批量
创建变换后的特征,数据存储库则为模型训练提供了对变换后特征的快速访问。特
征仓库的优点是对变换操作在适应模型图上没有要求。例如,只要特征仓库支持
Java
,预处理操作就可以在
Java
中执行,而模型本身可以用
PyTorch
编写。特征仓
库的缺点是它使模型依赖于特征仓库,并使服务基础设施更加复杂。
另一种将用于特征变换的编程语言和框架与编写模型所用的语言分开的方法是在容
器中实施预处理并将这些自定义容器作为训练和服务的一部分。在“设计模式
25
:
工作流管道”一节中对此进行了讨论并在实践中被
Kubeflow
服务所采用。
设计模式
22
:可重复拆分
为了确保采样的可重复性和可复现性,有必要使用具备合理分布的列和一个确定的
哈希函数来将可用数据拆分为训练、验证和测试数据集。
问题
许多机器学习教程会建议使用类似下面的代码将数据随机拆分成训练、验证和测试
数据集:
df = pd.DataFrame(...)
rnd = np.random.rand(len(df))
train=df[rnd<0.8 ]
valid = ...