Distributed Keras远程部署指南:Punchcard服务器+Secret认证,3行代码提交大集群训练任务
Distributed Keras远程部署指南Punchcard服务器Secret认证3行代码提交大集群训练任务【免费下载链接】dist-kerasDistributed Deep Learning, with a focus on distributed training, using Keras and Apache Spark.项目地址: https://gitcode.com/gh_mirrors/di/dist-kerasDistributed Kerasdist-keras是构建在 Apache Spark 与 Keras 之上的分布式深度学习框架专注大规模分布式训练。本文带你走通它的远程部署机制用 Punchcard 服务器接收作业、用 Secret 密钥完成认证只需 3 行代码即可把本地 notebook 里训练好的模型提交到大集群上训练并自动取回训练好的模型。一、为什么需要远程部署在实际项目中模型开发和大作业提交往往发生在两台不同的机器上本地/Notebook 服务器用小数据集调试模型结构与超参数远端 Hadoop / Spark 集群真正的海量数据存放在 HDFS 上大模型训练必须提交到集群执行。如果没有远程部署能力你就得手动编写 Spark 集群作业、处理数据读取、再手动搬运训练结果。Distributed Keras 把这个流程简化成本地定义好训练器trainer→ 发送给远端的 Punchcard 服务器 → 服务器自动生成集群作业代码并执行 → 训练结束后把模型和历史曲线发回本地。整个架构如下二、Punchcard 服务器工作原理Punchcard 是基于 Flask 的轻量作业调度服务实现见 distkeras/job_deployment.py它在集群侧监听请求并通过一组 REST 接口完成作业全生命周期管理接口方法作用/api/submitPOST提交训练作业必须携带合法 secret/api/stateGET查询作业是否仍在运行/api/cancelGET取消正在运行的作业/api/destroyGET作业完成后取回模型与训练历史它的工作流程是认证校验请求中的 secret 是否在密钥文件中、是否正在被占用不合法则返回 403执行把 trainer 序列化落盘自动生成 Spark 作业脚本以yarn-client模式提交集群从 HDFS 读取 Parquet 数据开始训练回传训练完成后模型和 history 可通过/api/destroy拉回本地。Distributed Keras 的大多数训练器采用异步数据并行方式多个 Worker 各自训练模型副本并异步向 Parameter Server 汇报参数更新三、生成 Secret 完成用户认证Punchcard 只接受持有合法密钥secret的请求。secret 本质上是一个用户身份的长随机字符串一个用户可以拥有多个 secret。 项目自带了密钥生成脚本 scripts/generate_secret.py为指定身份生成一个 64 位随机密钥python scripts/generate_secret.py --identity userX将输出的 JSON 结构追加到密钥文件secrets.json中其结构如下[ { secret: secret_of_user_1, identity: user1 }, { secret: secret_of_user_2, identity: user2 } ]四、启动 Punchcard 服务器密钥文件准备好后在集群侧一条命令启动服务器入口脚本为 scripts/punchcard.pypython scripts/punchcard.py --secrets /path/to/secrets.json --port 8000默认端口为8000默认密钥文件为当前目录下的secrets.json服务器启动后监听0.0.0.0即可接受来自远端 notebook 的作业提交。五、3 行代码提交大集群训练任务回到本地 notebook先定义好分布式训练器如ADAG、DOWNPOUR等均来自 distkeras/trainers.py然后只需 3 行代码完成提交job Job(secret, job_name, data_path, num_executors, num_processes, trainer) job.send(http://yourcluster:8000) job.wait_completion()各参数含义secret上一步生成的认证密钥data_pathHDFS 上 Parquet 数据的路径num_executors/num_processesSpark 集群的 executor 数量与每个 executor 的进程数trainer本地定义好的分布式训练器会被自动序列化发送到集群。wait_completion()内部会轮询/api/state直到远端作业结束并通过/api/destroy取回结果。接下来两行即可拿到成果trained_model job.get_trained_model() # 训练好的 Keras 模型 history job.get_history() # loss / accuracy 训练历史训练过程不需要任何手工干预作业脚本、数据读取、模型保存、临时文件清理都由 Punchcard 自动完成序列化/反序列化工具见 distkeras/utils.py。六、为什么要提交到大集群大集群的价值在实验数据中一目了然。下面这组 ADAG 优化器的实验对比显示随着并行 Worker 数量增加训练墙钟时间从 1200 秒以上快速下降到 250 秒左右而中心模型精度稳定在 0.97 附近、几乎不随 Worker 数下降——这正是分布式 Keras 支持远程部署的初衷七、常见问题速查问题说明返回 403 是什么情况secret 不在密钥文件中或该 secret 已有作业在运行一个 secret 能并行跑多个作业吗不能Punchcard 保证同一 secret 同时只执行一个作业数据需要什么格式当前假设 HDFS 上的 Parquet 文件后续计划支持从 HDFS 直接读写 Keras 模型集群作业以什么模式运行生成的 Spark 作业固定使用yarn-client模式提交支持 Python 3 吗项目已知待改进项之一目前建议 Python 2 环境运行小结Distributed Keras 的远程部署方案 Secret 密钥认证 Punchcard 作业调度。集群侧一条命令起服务本地 3 行代码提交作业模型与训练历史自动回传——让你把精力放在模型与算法上而不是繁琐的集群运维上。更多分布式优化器ADAG、DynSGD、AEASGD、DOWNPOUR、Ensemble 等的用法可以参考示例笔记 examples/workflow.ipynb。【免费下载链接】dist-kerasDistributed Deep Learning, with a focus on distributed training, using Keras and Apache Spark.项目地址: https://gitcode.com/gh_mirrors/di/dist-keras创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

日新闻

周新闻

月新闻