900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【深度学习】Ivy 开源框架 深度学习大一统时代到来?

【深度学习】Ivy 开源框架 深度学习大一统时代到来?

时间:2023-04-16 17:09:31

相关推荐

【深度学习】Ivy 开源框架 深度学习大一统时代到来?

它来了,它带着统一主流深度学习框架的接口来了。最近,有一个开源的框架:IVY,它将几个主流的深度学习框架都做了一个统一的封装,包括 PyTorch、TensorFlow、MXNet、Jax 和 Numpy。下面来大致看一下这个框架吧。

近两年来,学术界和工业界一直在争论 PyTorch 和 TensorFlow 哪一个才是最好用的深度学习框架。除了这两个框架,谷歌出品的 Jax 也有起势的样子,还有亚马逊的 MXNet,都还在发展。PyTorch 在学术界最火,TensorFlow 工程上部署的较多,可谓各有千秋。所以,就有开源作者想把各种主流的框架统一做了封装,于是就有了 Ivy。

代码地址:/unifyai/ivy

先看看 IVY 官方是怎么定义的吧。

Ivyisaunifiedmachinelearningframeworkwhichmaximizestheportabilityofmachinelearningcodebases.IvywrapsthefunctionalAPIsofexistingframeworks.Framework-agnosticfunctions,librariesandlayerscanthenbewrittenusingIvy,withsimultaneoussupportforallframeworks.IvycurrentlysupportsJax,TensorFlow,PyTorch,MXNetandNumpy.

翻译出来就是:

Ivy 是一个统一的机器学习框架,可最大限度地提高机器学习代码库的可移植性。Ivy 封装了现有框架的功能 API。然后可以使用 Ivy 编写与框架无关的函数、库和层,它可以同时支持所有框架。Ivy 目前支持 Jax、TensorFlow、PyTorch、MXNet 和 Numpy。

目前官方已经发布了不少 Ivy 编写的派生库,包括力学、3D 视觉、机器人、增强学习、神经记忆、预训练模型以及实现,此外还有训练、数据加载的构建器工具等。

快速入门

我们可以直接pip install ivy-core来安装,然后你可以使用你喜欢的框架来训练一个模型,下面是一个示例:

importivyclassMyModel(ivy.Module):def__init__(self):self.linear0=ivy.Linear(3,64)self.linear1=ivy.Linear(64,1)ivy.Module.__init__(self)def_forward(self,x):x=ivy.relu(self.linear0(x))returnivy.sigmoid(self.linear1(x))ivy.set_framework('torch')#changetoanyframework!model=MyModel()optimizer=ivy.Adam(1e-4)x_in=ivy.array([1.,2.,3.])target=ivy.array([0.])defloss_fn(v):out=model(x_in,v=v)returnivy.reduce_mean((out-target)**2)[0]forstepinrange(100):loss,grads=ivy.execute_with_gradients(loss_fn,model.v)model.v=optimizer.step(model.v,grads)print('step{}loss{}'.format(step,ivy.to_numpy(loss).item()))print('Finishedtraining!')

这个示例使用 PyTorch 作为后端框架,但后端可以轻松更改为你喜欢的框架,例如 TensorFlow、JAX 或 MXNet。

框架无关的函数

Ivy 的函数可以接受所有框架的 tensor,如下面的例子:

importjax.numpyasjnpimporttensorflowastfimportnumpyasnpimportmxnetasmximporttorchimportivyjax_concatted=ivy.concatenate((jnp.ones((1,)),jnp.ones((1,))),-1)tf_concatted=ivy.concatenate((tf.ones((1,)),tf.ones((1,))),-1)np_concatted=ivy.concatenate((np.ones((1,)),np.ones((1,))),-1)mx_concatted=ivy.concatenate((mx.nd.ones((1,)),mx.nd.ones((1,))),-1)torch_concatted=ivy.concatenate((torch.ones((1,)),torch.ones((1,))),-1)

下面是 Ivy 支持的函数,可以看到,跟 Numpy、PyTorch、TensorFlow 的函数非常像

统一所有框架的目的何在?

很多开发者都想用一个框架开发,那么 Ivy 有啥用呢?

当你想让代码可用性最强的时候,Ivy的威力就显现了。

当我们想写一些代码,然后让社区所有开发者都可以用,不管他们用的是啥框架,TF、PyTorch、MXNet、Jax,都没关系。例如一个简单的裁剪函数ivy.clip,它很好的封装了其他框架的函数。

就其本身而言,这似乎不是很有意思,在机器学习中还有比裁剪张量更有趣的事情。Ivy 可以构建更多有趣的应用。

Ivy 官方发布的力学、3D 视觉、机器人和可微分环境的代码库都是用纯 Ivy 编写的。这些库为任何机器学习框架的用户提供了各种应用功能的完全可区分的实现,随时可以集成到用户的代码中。

Ivy 的另一个好处是灵活性。通过保持 Ivy 抽象的轻量级,以及齐全的功能,这使您可以完全控制您的代码。下面的示意图强调您可以选择在任何抽象级别进行开发。

你可以完全在 Ivy 中编写代码,或者在原生 DL 框架中使用少量 Ivy 代码。这完全取决于您需要从现有 Ivy 库中获得多少 Ivy 函数。

总得来说,Ivy 看着还挺有意思的。虽然我们当前可能用不上它,但是可以观察一下它的发展,说不准未来会有机会使用它,让我们静观其变吧~

点击“阅读原文”,直通公开课。

往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑AI基础下载机器学习交流qq群955171419,加入微信群请扫码:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。