Terraform Provider Iterative (TPI):简化云端计算资源管理的利器

Terraform Provider Iterative (TPI):简化云端计算资源管理的利器

terraform-provider-iterative☁️ Terraform plugin for machine learning workloads: spot instance recovery & auto-termination | AWS, GCP, Azure, Kubernetes项目地址:https://gitcode.com/gh_mirrors/te/terraform-provider-iterative

项目介绍

Terraform Provider Iterative (TPI) 是一个专为机器学习设计的 Terraform 插件。它提供了一个命令行工具,能够全面管理来自多个云供应商(如 AWS、Azure、GCP、K8s)的计算资源,包括 GPU 和自动恢复的竞价实例,而无需用户具备深厚的云技术背景。TPI 旨在降低成本、避免云供应商锁定、自动清理未使用的资源,并提供开发者友好的体验,让云端计算感觉就像在本地笔记本上操作一样简单。

项目技术分析

TPI 的核心技术优势在于其对云资源的自动化管理。它利用 Terraform 的强大功能,通过统一的抽象层来管理不同云供应商的资源。TPI 支持 AWS Auto Scaling Groups、Azure VM Scale Sets、GCP Managed Instance Groups 和 Kubernetes Jobs 等云原生扩展组,确保在竞价实例中断时能够自动恢复任务。此外,TPI 还提供了自动清理未使用资源的功能,确保用户只为其使用的资源付费。

项目及技术应用场景

TPI 适用于以下场景:

  1. 机器学习实验:数据科学家可以在云端运行大规模的机器学习实验,利用 TPI 的自动恢复功能,确保实验在中断后能够继续进行。
  2. 软件开发与测试:开发团队可以使用 TPI 在云端运行测试任务,自动管理计算资源,减少手动干预。
  3. 持续集成与持续部署(CI/CD):TPI 可以与现有的 CI/CD 工作流(如 GitHub Actions、GitLab CI、Bitbucket Pipelines)集成,提供云端计算资源的支持。

项目特点

  • 成本优化:通过自动恢复竞价实例和数据检查点/恢复功能,TPI 能够显著降低计算成本。
  • 无云供应商锁定:TPI 提供统一的抽象层,用户只需更改一行配置即可在不同云供应商之间切换。
  • 自动清理:TPI 会自动终止任务完成后或失败时的计算实例,并删除存储结果后的存储资源,避免资源浪费。
  • 开发者友好:TPI 提供了一键同步数据和代码执行的功能,无需外部服务器,让云端计算体验如同在本地操作一样简单。

使用指南

安装要求

  • 安装 Terraform 1.0+,例如:
    • 使用 Homebrew(Mac OS):brew tap hashicorp/tap && brew install hashicorp/tap/terraform
    • 使用 Chocolatey(Windows):choco install terraform
    • 使用 Conda(Anaconda):conda install -c conda-forge terraform
    • 使用 Debian(Ubuntu/Linux):
      sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
      curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
      sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
      sudo apt-get update && sudo apt-get install terraform
      
  • 在支持的云供应商处创建账户,并通过环境变量暴露其认证凭证。

定义任务

在项目根目录下创建一个名为 main.tf 的文件,内容如下:

terraform {
  required_providers { iterative = { source = "iterative/iterative" } }
}
provider "iterative" {}

resource "iterative_task" "example" {
  cloud      = "aws" # 或任何其他云供应商:gcp, az, k8s
  machine    = "m"   # 中等配置。其他选项包括:l, xl, m+k80, xl+v100, ...
  spot       = 0     # 自动定价。默认 -1 为禁用,或 >0 为每小时美元限制
  disk_size  = -1    # GB。默认 -1 为自动

  storage {
    workdir = "."       # 默认空白(不上传)
    output  = "results" # 默认空白(不下载)。相对于 workdir
  }
  script = <<-END
    #!/bin/bash

    # 如果需要,创建输出目录
    mkdir -p results
    # 读取上次结果(在竞价/抢占实例恢复的情况下)
    if test -f results/epoch.txt; then EPOCH="$(cat results/epoch.txt)"; fi
    EPOCH=$${EPOCH:-1}  # 如果未找到上次结果,则从 1 开始

    echo "(重新)开始训练循环,从 $EPOCH 到 1337 个 epoch"
    for epoch in $(seq $EPOCH 1337); do
      sleep 1
      echo "$epoch" | tee results/epoch.txt
    done
  END
}

运行任务

terraform init
export TF_LOG_PROVIDER=INFO
terraform apply

查询任务状态

terraform refresh
terraform show

结束任务

terraform destroy

未来计划

TPI 正在不断发展,未来计划包括:

  • 提供更多功能丰富的可视化界面。
  • 增加对分布式(多实例)训练的本地支持。
  • 优化数据同步选项。
  • 与 DVC 等工具更紧密的生态系统集成。
  • 提供更多面向数据科学家和机器学习工程师的示例,从 Jupyter、VSCode、Codespaces 到改进实时日志记录/监控/报告体验。

帮助与支持

如需更多帮助,请参阅 入门指南

TPI 是一个强大的工具,能够极大地简化云端计算资源的管理,无论你是数据科学家、开发人员还是 DevOps 工程师,TPI 都能为你提供无缝的云端计算体验。立即尝试 TPI,体验云端计算的便捷与高效!

terraform-provider-iterative☁️ Terraform plugin for machine learning workloads: spot instance recovery & auto-termination | AWS, GCP, Azure, Kubernetes项目地址:https://gitcode.com/gh_mirrors/te/terraform-provider-iterative

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

解洲思Ronald

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值