Вот он здесь или на гитхабе. Пилится с бешеной скоростью одним чуваком из MIT и, кажется, является конкурентом Halide. Типа язык для написания очень производительного кода для параллельных вычислений и при этом дифференцируемый. Кажется, что на нём можно переписать тот же TensorFlow и он станет быстрее. И не заморачиваться со Swift.
учитывая, что в этой области сейчас как-то тухло, для для CUDA конкурентов нет, но она только на Nvidia, то что-то должно выстрелить в конце концов. Кто-нибудь смотрел, пробовал, запускал что-нибудь на этом Taichi?
N>Вот он здесь или на гитхабе. Пилится с бешеной скоростью одним чуваком из MIT и, кажется, является конкурентом Halide. Типа язык для написания очень производительного кода для параллельных вычислений и при этом дифференцируемый. Кажется, что на нём можно переписать тот же TensorFlow
Вот так все бегом ломанулись переписывать TensorFlow на taichi. А до этого — на Halide. А до этого — на Pony.
Здравствуйте, Nuzhny, Вы писали:
N>Вот он здесь или на гитхабе. Пилится с бешеной скоростью одним чуваком из MIT и, кажется, является конкурентом Halide. Типа язык для написания очень производительного кода для параллельных вычислений и при этом дифференцируемый. Кажется, что на нём можно переписать тот же TensorFlow и он станет быстрее. И не заморачиваться со Swift. N>учитывая, что в этой области сейчас как-то тухло, для для CUDA конкурентов нет, но она только на Nvidia, то что-то должно выстрелить в конце концов. Кто-нибудь смотрел, пробовал, запускал что-нибудь на этом Taichi?
Первый раз слышу обо всём перечисленном.
Но последнее — Taichi — не звучное. Не взлетит точно
Здравствуйте, Nuzhny, Вы писали:
N>Вот он здесь или на гитхабе.
Ну вот почему, почему нельзя, представляя новый язык, делать это кодом, в виде небольшой понятной программы (но не примитива хелловорлд)? Почему надо какие-то видео снимать да всякий маркетинговый булшит писать?
Совсем деградировали.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
N>>Вот он здесь или на гитхабе. Ops>Ну вот почему, почему нельзя, представляя новый язык, делать это кодом, в виде небольшой понятной программы (но не примитива хелловорлд)? Почему надо какие-то видео снимать да всякий маркетинговый булшит писать?
Taichi is an open-source computer graphics library that aims to provide easy-to-use infrastructures for computer graphics R&D. It's written in C++14 and wrapped friendly with Python.
Здравствуйте, Muxa, Вы писали:
M>>>github/examples? нет? Ops>>Там же питон? M>
Taichi is an open-source computer graphics library that aims to provide easy-to-use infrastructures for computer graphics R&D. It's written in C++14 and wrapped friendly with Python.
А схренали пишут, что язык?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Ops, Вы писали:
Ops>А схренали пишут, что язык?
А CUDA — это язык или библиотека? Правильный ответ — это расширение языка + фреймворк или платформа. Расширение, потому что вводит в язык новые сущности.
Taichi создан на аналогичных правах: он расширяет язык, позволяя писать высокоэффективный код.
Ну и так же как и с CUDA вполне допустимо называть его языком, говорить "это написано на CUDA/Taichi". Вся прелесть задумки в том, что его можно прямо таки брать и использовать у себя в существующей программе уже сейчас.
Здравствуйте, xma, Вы писали:
xma>а подробнее можно — где он быстрее и за счёт чего ? xma>неужели быстрее чем NVidia'иавский код ?
Ну, ручками наверняка можно написать быстрее. Но ту же прямо из Питона, не выходя из кассы. Плюс он может быть быстрее за счёт высокоуровневых оптимизаций, которые он описывает у себя. Плюс автоматическое дифференцирование, которого в принципе нет в CUDA, а для нейросетевых и физических задач оно надо.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, Muxa, Вы писали:
N>>>Taichi создан на аналогичных правах: он расширяет язык M>>Какими конструкциями или элементами?
N>@ti.func и @ti.kernel. А дальше кастомный компилятор. Разве это не новые сущности языка? Такое есть в Питоне?
Оператор @ — это обычные питоновские обертки вокруг функций и классов (декораторы).
т.е.
@ti.func
def fn(n):
return n+1
эквивалентно:
def _fn_(n):
return n+1
fn=ti.func(_fn_)
Т.е. ti.func и ti.kernel — обычные функции в пространстве имен ti.
Иное дело, что они занимаются разбором байт-кода питона и генерацией, на его основе, кода CUDA. Т.е. как-бы новый back-end для питона.
Нечто подобное делает, например, numpy (numpy.vectorize).
Позволю себе усомниться в продуктивности такого подхода. Т.е. полученный код конечно будет эфективнее чем оригинальный питон-код (за счет массивного распараллеливания), но врядли обгонит аналогичный нативный код (CUDA). Дело в том, что на промежуточном этапе (байт-код) часть информации — теряется. Зная характрные входлные значения, вероятности переходов, для разных ветвей алгоритма, можно оптимизировать лучьше. Еще лучьше, иметь результаты профелирования характерных задач.
Так что переписывать TensorFlow на Taichi — безперспективно. Основное назначение — сделать видеокарту более доступной "обычным" пользователям питона, например, физикам.
Здравствуйте, Chorkov, Вы писали
C>Оператор @ — это обычные питоновские обертки вокруг функций и классов (декораторы).
Спасибо за разъяснение.
C>Так что переписывать TensorFlow на Taichi — безперспективно. Основное назначение — сделать видеокарту более доступной "обычным" пользователям питона, например, физикам.
Перспективы могут быть. Сейчас отличие PyTorch от Tensorflow как раз в том, что код для PyTorch пишется на Питоне, как на основном языке. Ну и за счёт использования всяких numpy и других библиотек, код работает быстрее. Поэтому PyTorch вырвался вперёд по популярности среди исследователей: все новые сущности пишутся на языке, на котором написан сам фреймворк, его легко и просто расширять.
TensorFlow наоборот, написан на плюсах, а для Питона сделаны биндинги. Поэтому код на TensorFlow легко пускать в продакшен на все платформы, где есть фреймворк, работает быстро. Но делать что-то новое на нем становится труднее, кода получается много и он громоздкий.
PyTorch для решения своей проблемы сделал возможность заворачивать питоновский код в бинарник, но это костыль. Tensorflow сделал свой костыль — интегрировал в себя питоновский Keras.
Далее TensorFlow начал новый экспериментальный проект Swift for TensorFlow, где код будет писаться на статически типизированном, компилируемом языке с автоматическим дифференциррванием, который будет основным языком фреймворка. Это отличный подход с одним минусом — комьюнити уже подсело на Питон. Вспомним Caffe, который быстрый, на плюсах и умер. Вспомним, что Torch на lua тоже умер. Theano умер. MxNet непонятно живой или нет.
Это я так плавно подвёл к тому, что Taichi может стать очередным костылем, причём успешным в этой эволюции. Он сочетает в себе и скорость, и дифференцируемость, и не самый удачный, но всеми любимый Питон.
Здравствуйте, XOOIOOX, Вы писали:
XOO>PyTorch тоже написан на плюсах и тоже для Питона биндинги. XOO>Для продакшена есть LibTorch, API которого сугубо на плюсах.
Ну, я на PyTorch не работаю, но разве там всё не через TorchScript делается? Мне показалось, что там без Питона никуда. Там даже граф создаётся динамически в рантайме.
TensorFlow же из C++ вызывается нативно, но очень многословно. Даже так: из С++ возможностей больше, чем из Питона. Собственно весь инференс у меня плюсовый на нём.
Здравствуйте, Nuzhny, Вы писали:
N>Ну, я на PyTorch не работаю, но разве там всё не через TorchScript делается?
Там как-то это через одно место сделано. Из плюсового ядра вызывается скрипт, который строит граф, потом обратно засовывает. Детально не разбирался, но в обзоре Питорча слышал, что примерно так.
N>=Кто-нибудь смотрел, пробовал, запускал что-нибудь на этом Taichi?
несколько дней назад баловался, с хелловорладми на джупитере. все работает. но кернел быстро умирает. и после этого бросил.
собственно от него же https://github.com/yuanming-hu/difftaichi