Re[3]: Посоветуйте ускоритель для tensorflow, torch
От: Grizzli  
Дата: 22.05.20 15:53
Оценка:
Здравствуйте, _ilya_, Вы писали:

__>Видюха в SP flops просто недосягаема для процов. В integer разница такая же 6-10х. Чет слива видюх не видно и не предвидится, скорее 100х будет.


Это все в очень, очень, очень узком классе алгоритмов. Стоит параллельному алгоритму быть из серии "в одном треде одно, в другом треде — резко другое",и все, видюха такое исполнить не может. Или может, но крайне неэффеткивно.

А вот где есть матрица чисел большой размерности, и над каждым числом нужно произвести плюс минус одинаковое действие — тут да, тут видюха рулит.
Re[5]: Посоветуйте ускоритель для tensorflow, torch
От: Michael7 Россия  
Дата: 23.05.20 07:41
Оценка:
Здравствуйте, IID, Вы писали:

IID>Только Linpack грузит процессор по самые помидоры, а эта хрень — нет. Что по энергопотреблению, что по нагреву.

IID>А если учесть что Linpack вовсю использует AVX2 — то становится понятно что реальных операций он делает во много раз больше.

Настоящий Linpack с AVX2 показывает меньше. Примерно столько же, сколько и Core i9 9900k. Около 540GFlops плюс-минус.
И кстати, линпак недостаточно нагружает процессор, по крайней мере по мониторингу температуры и мощности wPrime сильнее грузит.

IID>А уж как и что считать — отдельный вопрос. Довольно глупо сравнивать по сферическому числу "операций с плавающей точкой" два РАЗНЫХ теста. Один может складывать, а другой умножать. И то, и другое — операция.


gpgpu обычно используется для перемножения матриц и векторов, то, есть, то что очень хорошо параллелится, как и в линпаке.

M>>нет смысла вести вычисления, если только те не укладываются в single. То есть у видеокарт остался Single и целочисленные вычисления.


IID>Ещё как есть. Неронки даже fp8 используют, всё ради скорости.


Да, еще нейронки. Это важная часть. Но всеже узконишевая.

M>>То есть, сфера применения GPGPU сузилась


IID>Ты просто хвастаешься своим процессором.


Смешно даже. Привел тесты, что попалось под руку. У тредрипера 3960 еще меньше разницы с gpu. Хотя и цена выше.
Просто я помню с каким энтузиазмом еще недавно именно вычисления старались перевести на GPU, а сейчас это уже не так очевидно нужно или нет.
Re[3]: Посоветуйте ускоритель для tensorflow, torch
От: Michael7 Россия  
Дата: 23.05.20 07:53
Оценка: -1
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, Michael7, Вы писали:


M>>Я обратил внимание, что судя по тестам, современные многоядерные CPU стали догонять и даже опережать в ряде задач многие GPU. К примеру, скриншот для размышлений:


M>>Image: gpgpu-cpu.jpg


IID>Ну и где там опережение ?

IID>Четырёхкратное отставание что по MemoryCopy, что по Single Precision.

Я же не говорил, что процессоры теперь везде быстрее карты.

IID>И это ещё у тебя видеокарта слабая. Моя в 2 раза быстрее (а в 32 integer почти в 4 раза). При этом ей уже 4-ый год пошёл...


IID>Image: i7-7700K-1080ti.png


Да, карта конечно существенно быстрее. Хотя странно, что не на всех операциях, например почему-то sha-1 hash медленнее. Но обрати внимание, что если сравнивать и в твоем случае с CPU. Если не с 4 ядерным, то с большим количеством ядер.

Собственно я на что обращаю внимание. GPU рвали CPU в 50 раз, пока количество ядер было немного. Когда пошли действительно многоядерные CPU, 8-10 ядер, тем более 16-24 и еще более, то уже такого преимущества не видно.
Re[6]: Посоветуйте ускоритель для tensorflow, torch
От: IID Россия  
Дата: 23.05.20 09:50
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, IID, Вы писали:


IID>>Только Linpack грузит процессор по самые помидоры, а эта хрень — нет. Что по энергопотреблению, что по нагреву.

IID>>А если учесть что Linpack вовсю использует AVX2 — то становится понятно что реальных операций он делает во много раз больше.

M>Настоящий Linpack с AVX2 показывает меньше. Примерно столько же, сколько и Core i9 9900k. Около 540GFlops плюс-минус.

M>И кстати, линпак недостаточно нагружает процессор, по крайней мере по мониторингу температуры и мощности wPrime сильнее грузит.

Возможно это особенность AMD. Потому что на интеле (по-крайнекй мере на KabyLake) оба этих теста (wPrime, Linpack) грузят примерно одинаково.

IID>>А уж как и что считать — отдельный вопрос. Довольно глупо сравнивать по сферическому числу "операций с плавающей точкой" два РАЗНЫХ теста. Один может складывать, а другой умножать. И то, и другое — операция.


M>gpgpu обычно используется для перемножения матриц и векторов, то, есть, то что очень хорошо параллелится, как и в линпаке.


Я имею в виду что результаты теста слишком синтетические, а не абсолютные. Это не метрическая система, не километры-в-час и не килограммы-на-метр.
Два одинаковых теста сравнивать на разном железе можно.
Два разных, даже на одном железе, сравнивать бессмысленно. Даже линпаки разных версий выдают разное число попугаев.
kalsarikännit
Re[5]: Оффтоп
От: Sharov Россия  
Дата: 31.05.20 09:25
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>К счастью, для нейросетей хватает точности float — данные нормированы. С другой стороны, есть всякие RNN, которым float может и не хватить


А какая связь точности float с нормированием? Почему не double?
Кодом людям нужно помогать!
Отредактировано 31.05.2020 9:39 Sharov . Предыдущая версия .
Re[6]: Оффтоп
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 31.05.20 09:37
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:

S>А какая связь точности float с формированием? Почему не double?


Не с формированием, а с нормированием. Если бы данные не были нормированы, то они могли бы не влезть в динамический диапазон у float. У double этот диапазон намного шире, поэтому его используют, например, в инженерных расчётах, где надо учитывать миллиметры в размерах на сотни, а то и тысячи метров.
Re[7]: Оффтоп
От: Sharov Россия  
Дата: 31.05.20 09:53
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N> Если бы данные не были нормированы, то они могли бы не влезть в динамический диапазон у float. У double этот диапазон намного шире, поэтому его используют, например, в инженерных расчётах, где надо учитывать миллиметры в размерах на сотни, а то и тысячи метров.


Так это от данных зависит, причем здесь нормировка? Почему такая уверенность, что во float влезут?
Нормировка, это если у меня много величин, сумма которых 1, так? Если у меня этих величин очень очень много, то почему float должно хватить?
Кодом людям нужно помогать!
Re[8]: Оффтоп
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 31.05.20 10:30
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:

S>Так это от данных зависит, причем здесь нормировка? Почему такая уверенность, что во float влезут?

S>Нормировка, это если у меня много величин, сумма которых 1, так? Если у меня этих величин очень очень много, то почему float должно хватить?

Ну так данные: 1) одного порядка; 2) небольшие. Что ещё надо?
Re[9]: Оффтоп
От: Sharov Россия  
Дата: 31.05.20 10:35
Оценка:
Здравствуйте, Nuzhny, Вы писали:

S>>Так это от данных зависит, причем здесь нормировка? Почему такая уверенность, что во float влезут?

S>>Нормировка, это если у меня много величин, сумма которых 1, так? Если у меня этих величин очень очень много, то почему float должно хватить?

N>Ну так данные: 1) одного порядка; 2) небольшие. Что ещё надо?


Что значит одного порядка и небольшие? У меня триллиард значений, которые суммируется в 1. Почему это невозможная ситуация для нс?
Сколько там миллиардов параметров в гугловских сетках для ботов? Где про это можно почитать,потому как не пониаю, почему float для нс хватит.
Если у меня не две категории объектов, а миллиарды классов, что тогда?
Кодом людям нужно помогать!
Re[10]: Оффтоп
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 31.05.20 12:34
Оценка: 10 (1)
Здравствуйте, Sharov, Вы писали:

S>Что значит одного порядка и небольшие? У меня триллиард значений, которые суммируется в 1. Почему это невозможная ситуация для нс?


Одного порядка в данном случае означает, что там вообще +e0. Они могут суммироваться (точнее умножать я и суммироваться), но потом попадут на функцию активации и снова станут нормированными. Может ли в одном слое быть так много нейронов, что они переполняют точность float? Теоретически да, но я о таких сетях и близко не слышал.

S>Сколько там миллиардов параметров в гугловских сетках для ботов? Где про это можно почитать,потому как не пониаю, почему float для нс хватит.

S>Если у меня не две категории объектов, а миллиарды классов, что тогда?

В сети параметров может быть много, но нас интересует только один слой, потому что функция активации не даёт значениям переполнится. Если же будет выбрана другая функция активации, то надо будет ставить double. Но не понятно зачем такое делать. Это при инференсе. А при обучении double мог бы пригодиться, потому что там точность нужна больше. Но по факту сейчас при инференсе чаще всего хватает float16, а при обучении float32.
Где почитать, честно говоря, не знаю. Я встречал это в нескольких разных статьях, но уже не вспомню.
Re[8]: Оффтоп
От: El Camino Real США  
Дата: 10.06.20 07:18
Оценка: 5 (1) +1
Здравствуйте, Sharov, Вы писали:

S>Нормировка, это если у меня много величин, сумма которых 1, так?

Не совсем. Нормализация в статистике, она же z-оценка, это вычесть среднее и поделить на среднекватратичное отклонение, т.е. все величины для всех признаков получаются "в сигмах". Хотя сетевики-затейники любят приводить всё к диапазону [-1,1] или [0,1], но это уже, формально говоря, не нормализация, а min-max scaling. Теоретически, можно сгенерить сетку, где вес признака после какой-то операции в fp16 не влезет. На практике же, мы пытаемся протянуть все сигналы через все слои сети, т.е. веса искусственно "ограничиваются". Это называется Xavier initialization.
Re[9]: Оффтоп
От: Sharov Россия  
Дата: 10.06.20 17:39
Оценка:
Здравствуйте, El Camino Real, Вы писали:

S>>Нормировка, это если у меня много величин, сумма которых 1, так?

ECR>Не совсем. Нормализация в статистике, она же z-оценка, это вычесть среднее и поделить на среднекватратичное отклонение, т.е. все величины для всех признаков получаются "в сигмах". Хотя сетевики-затейники любят приводить всё к диапазону [-1,1] или [0,1], но это уже, формально говоря, не нормализация, а min-max scaling. Теоретически, можно сгенерить сетку, где вес признака после какой-то операции в fp16 не влезет. На практике же, мы пытаемся протянуть все сигналы через все слои сети, т.е. веса искусственно "ограничиваются". Это называется Xavier initialization.

А какая связь между тестирование гипотез (z-оценка) в статистике, и ограничения плотности распределения (сумма вероятностей 1)
для задач классификации? И почему для всего должно хватить fp8? Почему нам не нужно fp32(64) ? Вся суть в том, что если у меня
значение настолько маленькое, что не помещается в fp8, то это просто 0, и поэтому ничего кроме fp8(16) нам особо и не нужно?
Кодом людям нужно помогать!
Re[10]: Оффтоп
От: El Camino Real США  
Дата: 10.06.20 19:36
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:


S>А какая связь между тестирование гипотез (z-оценка) в статистике, и ограничения плотности распределения (сумма вероятностей 1)

S>для задач классификации?
Никакой. Потому что для задач классификации не нужно ограничение плотности распределения, нужно лишь масштабирование признаков (и то не для всех методов). Ну, вот людям нравится делать такое масштабирование через z-оценку или мин-макс. Не встречал строгих математических доказательств, что конкретный featuer scaling самый правильный.
S> И почему для всего должно хватить fp8? Почему нам не нужно fp32(64) ? Вся суть в том, что если у меня
S>значение настолько маленькое, что не помещается в fp8, то это просто 0, и поэтому ничего кроме fp8(16) нам особо и не нужно?
Какое значение? Признака в ряде данных? Да вообще пофигу на него, хоть в 8-битных целых храни, ну округлится туда-сюда, уже при размере выборки в десятки тысяч особо не заметишь разницы, если не на Kaggle соревнуешься. Веса в сети? Вот тут проблемы начнутся, если на каком-то слое overflow получится. Но большинство алгоритмов построены так, что динамический диапазон для весов искусственно ограничивается, значит на практике шансы словить минимальны. Более того, в специализированных чипах (не которые в магазине, а которые у TSMC заказываешь) вообще все операции по inference могут быть целочисленными (экономим на hardware FPU) и ничего, работает не жужжит. Конгечно, для среднего пользователя в таких заморочках особого смысла нет, потому что считающее железо — видеокарты.
Re[11]: Оффтоп
От: Sharov Россия  
Дата: 11.06.20 17:18
Оценка:
Здравствуйте, El Camino Real, Вы писали:

ECR>Но большинство алгоритмов построены так, что динамический диапазон для весов искусственно ограничивается, значит на практике шансы словить минимальны. Более того, в специализированных чипах (не которые в магазине, а которые у TSMC заказываешь) вообще все операции по inference могут быть целочисленными (экономим на hardware FPU) и ничего, работает не жужжит. Конгечно, для среднего пользователя в таких заморочках особого смысла нет, потому что считающее железо — видеокарты.


Собственно, это и есть мой вопрос -- почему и зачем ограничивается? Что значит мы ограничиваем вес -- типа если меньше какого-то эпсилон, то считаем, что вес 0? Я так далеко пока в нс не продвинулся, но уже не понимаю, почему что-то надо ограничивать. Все что я понял, что особая точность не нужна, т.е. что-то вроде если меньше 0.00001, то 0 и пофиг.
Кодом людям нужно помогать!
Re[12]: Оффтоп
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 11.06.20 18:28
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:

S>Собственно, это и есть мой вопрос -- почему и зачем ограничивается? Что значит мы ограничиваем вес -- типа если меньше какого-то эпсилон, то считаем, что вес 0? Я так далеко пока в нс не продвинулся, но уже не понимаю, почему что-то надо ограничивать. Все что я понял, что особая точность не нужна, т.е. что-то вроде если меньше 0.00001, то 0 и пофиг.


Это, типа, из биологических нейронов берут: он либо активирован, либо нет.
В биологических нейронах ток на выходе не зависит от тока на входе, активация у него дискретно-аналоговая и определяется частотой разрядов на аксоне: либо он редко и пускает импульсы и считается не активным, либо часто — активен.
в искусственных нейронах есть функция активации, которая работает не по времени, а по порогу. Нет смысла передавать сильно больше. Поэтому появляется возможность уменьшать разрядность, делать квантование в целые или даже строить бинарные сети.
Re[12]: Оффтоп
От: El Camino Real США  
Дата: 11.06.20 20:15
Оценка: 5 (1)
Здравствуйте, Sharov, Вы писали:

S>Собственно, это и есть мой вопрос -- почему и зачем ограничивается?

Потому что мы хотим получить оценку со всей сети и по всем сигналам. А сеть проходится последовательно. Если не ограничивать, существует вероятность, что на каком-то слое сигнал "потеряется" или начнёт слишком сильно доминировать, т.е. делаем не "если вес меньше эпсилон, то ноль", а наоборот "если вес меньше эпсилон, то эпсилон" (и сверху таким же макаром). Теоретически, можно рандомизировать порядок слоёв и вместо одной сети на выходе усреднять ансамбль из выборки (примерно как bootstrapping в статистике делают), но такой метод, по-моему, попахивает извращением.
Re[2]: Посоветуйте ускоритель для tensorflow, torch
От: TMU_1  
Дата: 29.06.20 17:30
Оценка:
N>Говорят, что при равной мощности видеокарт Radeon и Nvidia, первые в скорости обучения сеток (через ROCm) проигрывают в 2 раза.


Шолле (который автор Keras) прямо рекомендует для нейросетей использовать Nvidia.
Re[10]: Оффтоп
От: BrainSlug Израиль  
Дата: 29.06.20 18:33
Оценка:
S>Что значит одного порядка и небольшие? У меня триллиард значений, которые суммируется в 1. Почему это невозможная ситуация для нс?
S>Сколько там миллиардов параметров в гугловских сетках для ботов? Где про это можно почитать,потому как не пониаю, почему float для нс хватит.
S>Если у меня не две категории объектов, а миллиарды классов, что тогда?
что у тебя за размерность в задаче такая что появляется миллиард на слое? в гуглевских сетках ВСЕГО овердофига параметров. в каждом слое там вполне конкретная размерность. поскольку на вход поступает конкретная размерность. которая потом в зависимсоти от архитектуры и задачи, трансформирует данные, генерирует другие данные и что то с ними делает. float хватает за глаза, в силу самой постановки задачи. количество классов роли вообще не играет (мультиклассификацию имеешь ввиду? причем здесь она, ее вообще как правило сводят для простоты к 2. onevsrest). в ветке написали про функцию активации.типа не дает переполниться, не совсем. без функции активации , нейронка тупо линейная функция(и тогда нейронка вообще не нужна). для нелинейности вводят функции активации(в частности для оптимизации за счет градиентного спуска, именно поэтому некоторые функции активации популярны, некоторые устарели в тех или иных задачах и архитектурах, ибо градиент от них может быть "удобен"/"не удобен" грубо говоря, суть минимизировать ошибку). что касается потерь и неточностей, они вообще редко интересуют, если у тебя нейронка фигово классифицирует (или находит зависимость), что для нее критично некое столь малое эпсилон, то что то у тебя не то. (я уж молчу что всегда есть трешхолд) — на лицо явный оверфиттинг. если ты имеешь ввиду сами данные, то в ветке уже обьяснили про нормализацию и скейлинг
.
Отредактировано 29.06.2020 18:39 BrainSlug . Предыдущая версия .
Re: Посоветуйте ускоритель для tensorflow, torch
От: BrainSlug Израиль  
Дата: 29.06.20 18:47
Оценка:
BB>Вроде и Intel высовывается с видеокартами...

BB>Кстати, а специализированные ускоители? Intel свернул Nervana и пр...

BB>Может что другое есть в потребительском сегменте?
смотря что ты хочешь делать. поскольку если задача не такая большая, а это не основная работа, то по моему colab-а за 10 долларов в месяц хватит.
.
Re[2]: Посоветуйте ускоритель для tensorflow, torch
От: Bill Baklushi СССР  
Дата: 30.06.20 17:37
Оценка:
BrainSlug:

BS>смотря что ты хочешь делать. поскольку если задача не такая большая, а это не основная работа, то по моему colab-а за 10 долларов в месяц хватит.

Облака мне не нужны.
Модератор-националист Kerk преследует оппонентов по политическим мотивам.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.