Быстрый старт | Установка | Руководство | Упрощённый китайский
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.
Требования к окружению 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 или вручную.
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
# проверьте вашу версию 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 следующий:
# Только 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 могут быть похожие команды.
# 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
Jittor требует версию Python >= 3.7.
sudo apt install python3.7 python3.7-dev
Полный фреймворк компилируется Just-in-time. Установим Jittor через pip```bash git clone https://github.com/Jittor/jittor.git sudo pip3.7 install ./jittor export cc_path="clang++-8"
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
Чтобы проверить целостность Jittor, вы можете запустить тест обучения Resnet18. Примечание: требуется 6 ГБ RAM на GPU для этого теста.
python3.7 -m jittor.test.test_resnet
если тесты провалены, пожалуйста, сообщите нам об ошибках, и не стесняйтесь вносить вклад ^_^## Практическое руководство
В разделе практического руководства мы кратко объясним основные концепции Jittor.
Чтобы обучить вашу модель с помощью Jittor, вам нужно знать всего три основных концепции:
Давайте начнем с Var. Var — это базовый тип данных Jittor. В Jittor процесс вычислений асинхронный для оптимизации. Если вы хотите получить доступ к данным, можно использовать Var.data
для синхронного доступа к данным.```python
import jittor as jt
a = jt.float32([1, 2, 3])
print(a)
print(a.data)
И мы можем дать переменной имя.
```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 Yö 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 )