Project Icon

jittor

高性能实时编译深度学习框架,集成多种先进模型库

Jittor是一个基于实时(JIT)编译和元操作符的高性能深度学习框架。它支持Python前端,CUDA和C++后端,能够生成针对不同模型的高效代码。Jittor提供了丰富的模型库,涵盖图像识别、检测、分割、生成、可微渲染、几何学习和强化学习等领域。安装方式多样,环境配置简便,并且包含详尽的教程和文档,帮助用户快速入门。

Jittor: 即时编译 (JIT) 的深度学习框架

Jittor 标志

快速开始 | 安装 | 教程 | 简体中文

Jittor 是一个基于 JIT 编译和元操作符的高性能深度学习框架。整个框架和元操作符都是即时编译的。Jittor 集成了强大的操作符编译器和调优器,使我们能够为您的模型生成高性能代码。Jittor 还包含丰富的高性能模型库,包括:图像识别、检测、分割、生成、可微渲染、几何学习、强化学习等。

前端语言是 Python。在前端使用模块设计和动态图执行,这是深度学习框架接口中最受欢迎的设计。后端由高性能语言实现,如 CUDA、C++。

相关链接:

以下示例展示了如何一步一步地建模一个两层神经网络并从头开始训练,只需几行 Python 代码。

import jittor as jt
from jittor import Module
from jittor import nn
import numpy as np

class Model(Module):
    def __init__(self):
        self.layer1 = nn.Linear(1, 10)
        self.relu = nn.Relu() 
        self.layer2 = nn.Linear(10, 1)
    def execute (self,x) :
        x = self.layer1(x)
        x = self.relu(x)
        x = self.layer2(x)
        return x

def get_data(n): # 生成用于训练测试的随机数据
    for i in range(n):
        x = np.random.rand(batch_size, 1)
        y = x*x
        yield jt.float32(x), jt.float32(y)

learning_rate = 0.1
batch_size = 50
n = 1000

model = Model()
optim = nn.SGD(model.parameters(), learning_rate)

for i,(x,y) in enumerate(get_data(n)):
    pred_y = model(x)
    dy = pred_y - y
    loss = dy * dy
    loss_mean = loss.mean()
    optim.step(loss_mean)
    print(f"step {i}, loss = {loss_mean.data.sum()}")

内容

快速开始

我们提供了一些 jupyter 笔记本以帮助您快速开始使用 Jittor。

安装

Jittor 环境要求:

操作系统处理器Python编译器(可选) GPU 平台
Linux
(Ubuntu, CentOS, Arch,
UOS, KylinOS, ...)
x86
x86_64
ARM
loongson
>= 3.7g++ >=5.4Nvidia CUDA >= 10.0, cuDNN
AMD ROCm >= 4.0
Hygon DCU DTK >= 22.04
macOS
(>= 10.14 Mojave)
intel
Apple Silicon
>= 3.7clang >= 8.0-
Windows 10 & 11x86_64>= 3.8-Nvidia CUDA >= 10.2 cuDNN

Jittor 提供三种安装方式:pip、docker 或手动。

Pip 安装

sudo apt install python3.7-dev libomp-dev
python3.7 -m pip install jittor
# 或从 github 安装最新版本
# python3.7 -m pip install git+https://github.com/Jittor/jittor.git
python3.7 -m jittor.test.test_example

macOS 安装

请首先使用 homebrew 安装额外的依赖项。

brew install libomp

然后您可以通过 pip 安装 jittor 并运行示例。

python3.7 -m pip install jittor
python3.7 -m jittor.test.test_example

目前 jittor 仅支持在 macOS 上使用 CPU。

Windows 安装

# 检查您的 Python 版本 (>=3.8)
python --version
python -m pip install jittor
# 如果使用 conda
conda install pywin32

在 Windows 上,jittor 会自动检测并安装 CUDA,请确保您的 NVIDIA 驱动程序支持 CUDA 10.2 或更高版本,或者您可以手动让 jittor 为您安装 CUDA:

python -m jittor_utils.install_cuda

Docker 安装

我们提供了一种 Docker 安装方法以避免您配置环境。Docker 安装方法如下:

# 仅 CPU (Linux)
docker run -it --network host jittor/jittor
# CPU 和 CUDA (Linux)
docker run -it --network host --gpus all jittor/jittor-cuda
# 仅 CPU (Mac 和 Windows)
docker run -it -p 8888:8888 jittor/jittor

手动安装

我们将展示如何在 Ubuntu 16.04 上一步步安装 Jittor,其他 Linux 发行版可能有类似的命令。

第一步:选择您的后端编译器

# g++
sudo apt install g++ build-essential libomp-dev

# 或 clang++-8
wget -O - https://raw.githubusercontent.com/Jittor/jittor/master/script/install_llvm.sh > /tmp/llvm.sh
bash /tmp/llvm.sh 8

第二步:安装 Python 和 python-dev

Jittor 需要 Python 版本 >= 3.7。

sudo apt install python3.7 python3.7-dev

步骤3:运行Jittor

整个框架是即时编译的。让我们通过pip安装jittor

git clone https://github.com/Jittor/jittor.git
sudo pip3.7 install ./jittor
export cc_path="clang++-8"
# 如果使用其他编译器,则更改cc_path
# export cc_path="g++"
# export cc_path="icc"

# 运行一个简单的测试
python3.7 -m jittor.test.test_example

如果测试通过,说明你的Jittor已经准备好了。

可选步骤4:启用CUDA

在Jittor中使用CUDA非常简单,只需设置环境变量nvcc_path

# 将此变量替换为你的nvcc位置
export nvcc_path="/usr/local/cuda/bin/nvcc" 
# 运行一个简单的cuda测试
python3.7 -m jittor.test.test_cuda 

如果测试通过,你可以通过设置use_cuda标志来在Jittor中使用CUDA。

import jittor as jt
jt.flags.use_cuda = 1

可选步骤5:测试Resnet18训练

为了检查Jittor的完整性,你可以运行Resnet18训练测试。注意:此测试需要6G GPU RAM。

python3.7 -m jittor.test.test_resnet

如果这些测试未通过,请向我们报告错误,并随时贡献代码 ^_^

教程

在教程部分,我们将简要解释Jittor的基本概念。

要使用Jittor训练你的模型,你只需了解三个主要概念:

  • Var:jittor的基本数据类型
  • 操作:Jittor的操作与numpy相似

Var

首先,让我们从Var开始。Var是jittor的基本数据类型。Jittor中的计算过程是异步的,以进行优化。如果你想访问数据,可以使用Var.data进行同步数据访问。

import jittor as jt
a = jt.float32([1,2,3])
print (a)
print (a.data)
# 输出:float32[3,]
# 输出:[ 1. 2. 3.]

我们还可以给变量命名。

a.name('a')
print(a.name())
# 输出:a

操作

Jittor的操作与numpy相似。让我们尝试一些操作。我们通过操作jt.float32创建了Var ab,并将它们相加。打印这些变量显示它们具有相同的形状和数据类型。

import jittor as jt
a = jt.float32([1,2,3])
b = jt.float32([4,5,6])
c = a*b
print(a,b,c)
print(type(a), type(b), type(c))
# 输出:float32[3,] float32[3,] float32[3,]
# 输出:<class 'jittor_core.Var'> <class 'jittor_core.Var'> <class 'jittor_core.Var'>

此外,我们使用的所有操作jt.xxx(Var, ...)都有别名Var.xxx(...)。例如:

c.max() # jt.max(c)的别名
c.add(a) # jt.add(c, a)的别名
c.min(keepdims=True) # jt.min(c, keepdims=True)的别名

如果你想知道Jittor支持的所有操作,请尝试help(jt.ops)。所有你在jt.ops.xxx中找到的操作,都可以通过别名jt.xxx使用。

help(jt.ops)
# 输出:
#   abs(x: core.Var) -> core.Var
#   add(x: core.Var, y: core.Var) -> core.Var
#   array(data: array) -> core.Var
#   binary(x: core.Var, y: core.Var, op: str) -> core.Var
#   ......

更多

如果你想了解更多关于Jittor的信息,请查看以下笔记本:

你可以在自己的电脑上通过python3.7 -m jittor.notebook启动这些笔记本。

贡献

Jittor还很年轻,可能包含错误和问题。请在我们的错误跟踪系统中报告它们。欢迎贡献。此外,如果你对Jittor有任何想法,请告诉我们。

你可以通过以下方式帮助Jittor:

  • 在你的论文中引用Jittor
  • 向你的朋友推荐Jittor
  • 贡献代码
  • 贡献教程和文档
  • 提交问题
  • 回答jittor相关问题
  • 点亮星星
  • 关注jittor
  • ......

联系我们

网站: http://cg.cs.tsinghua.edu.cn/jittor/

邮箱: jittor@qq.com

提交问题: https://github.com/Jittor/jittor/issues

QQ群: 836860279

团队

Jittor目前由Tsinghua CSCG Group维护。如果你对Jittor感兴趣并想改进它,请加入我们!

引用

@article{hu2020jittor,
  title={Jittor: a novel deep learning framework with meta-operators and unified graph execution},
  author={Hu, Shi-Min and Liang, Dun and Yang, Guo-Ye and Yang, Guo-Wei and Zhou, Wen-Yang},
  journal={Science China Information Sciences},
  volume={63},
  number={222103},
  pages={1--21},
  year={2020}
}

许可证

Jittor按照LICENSE.txt文件中的Apache 2.0许可进行许可。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号