1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-jittor

Клонировать/Скачать
README.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.05.2025 06:50 2440e13

Jittor: фреймворк для глубокого обучения с использованием just-in-time (JIT) компиляции

Логотип Jittor

Быстрый старт | Установка | Руководство | Упрощённый китайский

Jittor — это высокопроизводительный фреймворк для глубокого обучения, основанный на JIT-компиляции и мета-операторах. Вся система и мета-операторы компилируются в режиме just-in-time. В Jittor интегрирован мощный компилятор и оптимизатор операторов, что позволяет генерировать высокопроизводительный код, специализированный для вашей модели. Jittor также включает в себя множество высокопроизводительных библиотек моделей, включая: распознавание изображений, обнаружение, сегментацию, генерацию, дифференциальное рендеринг, геометрическое обучение, обучение с подкреплением и т.д.

Фронтенд-язык — Python. В фронтенде используется модульное проектирование и динамическое выполнение графа, что является наиболее популярным дизайном для интерфейсов фреймворков глубокого обучения. Бэкенд реализован на высокопроизводительных языках, таких как CUDA и C++.Связанные ссылки:

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)
```обучение_скорость = 0.1
пакет_размер = 50
n = 1000

модель = Модель()
оптим = nn.SGD(модель.параметры(), обучение_скорость)

для i, (x, y) в enumerate(получить_данные(n)):
    пред_y = модель(x)
    dy = пред_y - y
    потери = dy * dy
    среднее_потеря = потери.mean()
    оптим.шаг(среднее_потеря)
    print(f"шаг {i}, потери = {среднее_потеря.данные.sum()}")

Содержание

Быстрый старт

Мы предоставляем некоторые ноутбуки Jupyter, чтобы помочь вам быстро начать работу с Jittor.

  • [Пример: Определение модели и обучение][1]
  • [Основы: Операция, Переменная][2]
  • [Мета-оператор: Реализация собственного свёртного слоя с помощью Мета-оператора][3]

Установка

Требования к окружению Jittor:| ОС | Процессор | Python | Компилятор | (Необязательно) Платформа GPU | |--------------------------------------------------------|-------------------------------------------|--------|----------------|-------------------------------------------------------------| | Linux
(Ubuntu, CentOS, Arch,
UOS, KylinOS, ...) | x86
x86_64
ARM
loongson | >= 3.7 | g++ >= 5.4 | Nvidia CUDA >= 10.0, cuDNN
или AMD ROCm >= 4.0
или Hygon DCU DTK >= 22.04 | | Windows 10 & 11 | x86_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

Установка на Windows

# проверьте вашу версию Python (>=3.8)
python --version
python -m pip install jittor
# если используется conda
conda install pywin32
```В Windows Jittor автоматически обнаружит и установит CUDA, убедитесь, что ваш драйвер NVIDIA поддерживает CUDA 10.2 или выше, или вы можете вручную заставить Jittor установить CUDA для вас:

```bash
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

Ручная установка

Мы покажем, как установить Jittor на Ubuntu 16.04 пошагово. Для других дистрибутивов Linux могут быть похожие команды.

Шаг 1: Выбор вашего компилятора

# 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

Шаг 2: Установка Python и python-dev

Jittor требует версию Python >= 3.7.

sudo apt install python3.7 python3.7-dev

Шаг 3: Запуск Jittor

Полный фреймворк компилируется Just-in-time. Установим Jittor через pip```bash 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

Использование CUDA в Jittor очень просто, достаточно настроить переменную окружения `nvcc_path`


```bash
# замените эту переменную на путь к вашему nvcc
export nvcc_path="/usr/local/cuda/bin/nvcc" 
# запустим простой тест CUDA
python3.7 -m jittor.test.test_cuda 

если тест пройден, вы можете использовать Jittor с CUDA, установив флаг use_cuda.

import jittor as jt
jt.flags.use_cuda = 1

Необязательный Шаг 5: Тестирование обучения Resnet18

Чтобы проверить целостность Jittor, вы можете запустить тест обучения Resnet18. Примечание: требуется 6 ГБ RAM на GPU для этого теста.

python3.7 -m jittor.test.test_resnet

если тесты провалены, пожалуйста, сообщите нам об ошибках, и не стесняйтесь вносить вклад ^_^## Практическое руководство

В разделе практического руководства мы кратко объясним основные концепции Jittor.

Чтобы обучить вашу модель с помощью Jittor, вам нужно знать всего три основных концепции:

  • Var: базовый тип данных Jittor
  • Operations: Jittor'овские операции похожи на numpy

Var

Давайте начнем с Var. Var — это базовый тип данных Jittor. В Jittor процесс вычислений асинхронный для оптимизации. Если вы хотите получить доступ к данным, можно использовать Var.data для синхронного доступа к данным.```python import jittor as jt a = jt.float32([1, 2, 3]) print(a) print(a.data)

Вывод: float32[3,]

Вывод: [1. 2. 3.]


И мы можем дать переменной имя.


```python
a.name('a')
print(a.name())
# Вывод: a

Операции

Операции Jittor похожи на numpy. Давайте попробуем несколько операций. Мы создаем переменные a и b с помощью операции jt.float32, а затем складываем их. Вывод этих переменных показывает, что они имеют одинаковую форму и тип данных.

import jittor as jt
a = jt.float32([1, 2, 3])
b = jt.float3  32([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, пожалуйста, проверьте ноутбуки ниже:

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'>
```* Quickstart
    - [Пример: Определение модели и обучение][1]
    - [Основы: Op, Var][2]
    - [Мета-оператор: Реализация собственного свертного слоя с помощью мета-оператора][3]
* Расширенное
    - [Пользовательский Op: написание оператора с использованием C++ и CUDA и JIT-компиляция][4]
    - [Профилирование: Профилирование вашей модели][5]
    - Jtune: Инструмент для настройки производительности[1]: Example: Model definition and training
[2]: Basics: Op, Var
[3]: Meta-operator: Implement your own convolution with Meta-operator
[4]: Custom Op: write your operator with C++ and CUDA and JIT compile it
[5]: Profiler: Profiling your model[1]: python/jittor/notebook/example.src.md	"пример"
[2]: python/jittor/notebook/basics.src.md	"основы"
[3]: python/jittor/notebook/meta_op.src.md	"мета-операторы"
[4]: python/jittor/notebook/custom_op.src.md	"пользовательские операторы"
[5]: python/jittor/notebook/profiler.src.md	"профилирование"

Эти ноутбуки можно запустить на вашем собственном компьютере командой `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


<img src="https://github.com/Jittor/jittor/assets/62846124/8dd830bd-b31c-4e4f-9a78-5fd7a3409145" width="200"/>


## Команда


Jittor в настоящее время поддерживается [группой Tsinghua CSCG](https://cg.cs.tsinghua.edu.cn/). Если вы также интересуетесь Jittor и хотите его улучшить, пожалуйста, присоединяйтесь к нам!## Цитирование

@article{hu2020jittor, title={Jittor: новый фреймворк глубинного обучения с мета-операторами и унифицированным графовым выполнением}, 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 лицензирован Apache 2.0, как указано в LICENSE.txt файле.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-jittor.git
git@api.gitlife.ru:oschina-mirror/mirrors-jittor.git
oschina-mirror
mirrors-jittor
mirrors-jittor
master