ivy: 机器学习代码跨框架转换利器

GitHubhttps://github.com/ivy-llc/ivy

更多AI开源软件发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI

可以将机器学习模型、工具和库从一个框架转换到另一个框架。开发者通过简单的函数即可完成代码的转换,支持 TensorFlow、PyTorch、JAX 等主流框架。

我们探索svy的技术原理,会发现,ivy对于代码的解析能力十分关键,主要的能力包括:

  1. 代码解析: Ivy首先会解析源框架的代码,理解其结构和功能。
  2. 中间表示: 将源代码转换为Ivy的中间表示,这是一种框架无关的表示方式。
  3. 目标代码生成: 根据中间表示生成目标框架的等效代码。
  4. 优化: 在转换过程中,Ivy会应用各种优化技术,以确保生成的代码高效运行。

支持的框架

这些是当前支持 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​的计算图,并生成一个优化后的图函数。这个优化后的函数可以提供更高的执行效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值