快速链接
本 README 所含内容
快速开始
创建一个 Tango 步骤:
# hello.py
from tango import step
@step()
def hello(name: str) -> str:
message = f"Hello, {name}!"
print(message)
return message
并创建一个对应的实验配置文件:
// hello.jsonnet
{
steps: {
hello: {
type: "hello",
name: "World",
}
}
}
然后使用本地工作区运行实验以缓存结果:
tango run hello.jsonnet -w /tmp/workspace
你将在输出中看到类似如下的信息:
Starting new run expert-llama
● Starting step "hello"...
Hello, World!
✓ Finished step "hello"
✓ Finished run expert-llama
如果你再次运行这个实验,输出将会如下所示:
Starting new run open-crab
✓ Found output for step "hello" in cache...
✓ Finished run open-crab
这次你不会看到 "Hello, World!",因为步骤的结果已在缓存中找到,所以没有重新运行。
有关更详细的介绍,请查看 第一步 的指南。
安装
ai2-tango 需要 Python 3.8 或更高版本。
使用 pip
安装
ai2-tango 可在 PyPI 获取。只需运行
pip install ai2-tango
要安装指定的集成,例如 torch
,运行
pip install 'ai2-tango[torch]'
要安装所有集成,运行
pip install 'ai2-tango[all]'
使用 conda
安装
ai2-tango 可在 conda-forge 获取。你可以仅安装基础包:
conda install tango -c conda-forge
你可以选择安装以下集成中的任意一个:
conda install tango-datasets -c conda-forge
conda install tango-torch -c conda-forge
conda install tango-wandb -c conda-forge
你也可以安装所有内容:
conda install tango-all -c conda-forge
尽管 ai2-tango 本身很小,但安装所有内容将会拉取很多的依赖项。不要惊讶如果这需要一段时间!
从源代码安装
要从源代码安装 ai2-tango,首先克隆 仓库:
git clone https://github.com/allenai/tango.git
cd tango
然后运行
pip install -e '.[all]'
要仅安装指定的集成,例如 torch
,运行
pip install -e '.[torch]'
或者仅安装基础 tango 库:
pip install -e .
检查你的安装
运行
tango info
来检查你的安装。
Docker 镜像
你可以通过使用官方 Dockerfile 作为你自己的 Dockerfile 的起点,构建适用于 tango 项目的 Docker 镜像,或者你可以简单地使用我们的预构建镜像作为你 Dockerfile 中的基础镜像。例如:
# 从预构建的 tango 基础镜像开始。
# 你可以从可用选项中选择正确的标签:
# https://github.com/allenai/tango/pkgs/container/tango/versions
FROM ghcr.io/allenai/tango:cuda11.3
# 安装项目的额外需求。
COPY requirements.txt .
RUN /opt/conda/bin/pip install --no-cache-dir -r requirements.txt
# 安装源代码。
# 这个指令会拷贝当前目录(构建上下文中的所有内容),
# 这可能不是你想要的。考虑使用 ".dockerignore" 文件来
# 排除你不想放入镜像的文件和目录。
COPY . .
确保根据你所使用的 tango 版本和主机支持的 CUDA 版本选择正确的基础镜像。你可以在 GitHub 查看所有可用的镜像标签列表。
常见问题
为什么这个库叫做 Tango?
这个库背后的动机是通过将研究组成明确定义的步骤,使研究变得更容易。当你将多个步骤编排在一起时,会发生什么?嗯,你得到了一支舞蹈。由于我们团队的领导者 是一支探戈乐队的一部分,“AI2 Tango” 就成了一个显而易见的选择!
如何通过 Tango CLI 调试我的步骤?
你可以通过 pdb 运行 tango
命令。例如:
python -m pdb -m tango run config.jsonnet
Tango 与 Metaflow、Airflow 或 redun 有何不同?
我们发现像这些工具一样现有的 DAG 执行引擎非常适合生产工作流,但不太适合代码经常更改的凌乱、协作研究项目。AI2 Tango 专为这些种类的研究项目而构建。
Tango 的缓存机制如何工作?
AI2 Tango 根据步骤的 unique_id
缓存步骤的结果。unique_id
本质上是所有步骤输入的哈希及以下内容:
- 步骤类的完全限定名,以及
- 步骤类的
VERSION
类变量(一个任意字符串)。
与其他工作流引擎如 redun 不同,Tango 并 不 考虑类本身的源代码(除非是完全限定名),因为我们发现使用源代码字节的哈希会过于敏感,且对用户不够透明。当你以有意义的方式更改步骤的源代码时,只需手动更改 VERSION
类变量来告诉 Tango 该步骤已更新。
团队
ai2-tango 由 AllenNLP 团队开发和维护,该团队隶属于艾伦人工智能研究所 (AI2)。AI2 是一个非营利研究所,任务是通过高影响力的 AI 研究和工程为人类做出贡献。要了解是谁具体贡献了此代码库,请查看我们的贡献者 页面。
许可证
ai2-tango 根据 Apache 2.0 许可证授权。完整的许可证副本可以在 GitHub 上找到。