可以将机器学习模型、工具和库从一个框架转换到另一个框架。开发者通过简单的函数即可完成代码的转换,支持 TensorFlow、PyTorch、JAX 等主流框架。
支持的框架
这些是当前支持 conversion from 和 to 的框架。 我们正在努力添加对更多框架的支持,如果有对您有用的源/目标框架,请在 Discord 上告诉我们!ivy.transpile
框架 | 源 | 目标 |
---|---|---|
PyTorch 插件 | ✅ | 🚧 |
TensorFlow | 🚧 | ✅ |
JAX | 🚧 | ✅ |
NumPy | 🚧 | ✅ |
安装 ivy
设置 Ivy 的最简单方法是使用 pip 安装它:
pip install ivy
-
Docker 镜像 您可以从以下位置提取 Ivy 的 Docker 镜像:
docker pull ivyllc/ivy:latest
-
从源 如果您想利用 最新的更改,但我们不能保证一切都会像 预期 😅
git clone https://github.com/ivy-llc/ivy.git cd ivy pip install --user -e .
如果您想设置测试和各种框架,这可能是最好的 查看设置页面,其中提供了特定于作系统和 IDE 的说明!
Ivy的使用示例
1. 跨框架代码转换
以下是一个将PyTorch代码转换为TensorFlow代码的简单示例:
import ivy
import torch
import tensorflow as tf
def torch_fn(x):
a = torch.mul(x, x)
b = torch.mean(x)
return x * a + b
tf_fn = ivy.transpile(torch_fn, source="torch", target="tensorflow")
tf_x = tf.convert_to_tensor([1., 2., 3.])
ret = tf_fn(tf_x)
在这个例子中,我们定义了一个简单的PyTorch函数torch_fn
,然后使用ivy.transpile
将其转换为TensorFlow函数tf_fn
。转换后的函数可以直接接受TensorFlow张量作为输入并正常运行。
2. 计算图追踪
Ivy还提供了计算图追踪功能,可以优化任何代码的计算图:
import ivy
import torch
def torch_fn(x):
a = torch.mul(x, x)
b = torch.mean(x)
return x * a + b
torch_x = torch.tensor([1., 2., 3.])
graph = ivy.trace_graph(torch_fn, to="torch", args=(torch_x,))
ret = graph(torch_x)
在这个例子中,我们使用ivy.trace_graph
函数来追踪torch_fn
的计算图,并生成一个优化后的图函数。这个优化后的函数可以提供更高的执行效率。
探索svy的技术原理,我们会发现,ivy对于代码的解析能力十分关键:
- 代码解析: Ivy首先会解析源框架的代码,理解其结构和功能。
- 中间表示: 将源代码转换为Ivy的中间表示,这是一种框架无关的表示方式。
- 目标代码生成: 根据中间表示生成目标框架的等效代码。
- 优化: 在转换过程中,Ivy会应用各种优化技术,以确保生成的代码高效运行。