Обновить

Нейро сети для самых маленьких. Часть нулевая. Обзорная

Уровень сложностиСложный
Время на прочтение65 мин
Охват и читатели16K
Всего голосов 65: ↑64 и ↓1+82
Комментарии40

Комментарии 40

Пришли Нероны сжигать нейроны.. отличная статья, но почему-то подписи к картинкам часто упоминают Императоров

Не думал, что так быстро спалят))

Нерон
недоволен своими весами
недоволен своими весами

Если серьезно, то не очень понятно, как происходит вот этот ключевой момент:

в первом скрытом слое зажигаются те нейроны, которые определяют разные простые формы

то есть там есть какой-то сумматор?

Ну в каком-то смысле трансформеры — это последовательность сумматоров, и компараторов (нелинейных функций).

а вы не хотите исправить свои опечатки?

Это не опечатки, а ханипоты

в нейросетях нет никакой магии — это просто множество простых операций над числами, которые выполняются на компьютерах со специальными чипами.

Так ни в чём нет никакой магии. Человеческая жизнь это просто множество химических процессов. А человеческое сознание - это такая же нейросеть, только аналоговая, ещё проще. Только вот крошечная нейросеть из 768 нейронов превращает кучку железок лежащих на полу в почти живое существо. По крайней мере, оно начинает двигаться как живое.

Как говорил Докинз в "Бог как иллюзия", что полное понимание процессов во время секса, не мешает наслаждаться им)

Магии нет, но и знака равенства тоже нет

Начало пафосное, но сразу настораживает про "...доменную область..."

А почему настораживает?

Годная статья. Так вот как оно параллелится! Я конечно предполагал, что при обучении по шинам эти десятки терабайт никто гонять не должен (вроде) но не понимал как именно оно работает. ХитрО.

А про распределенный инференс будет статья?

Я конечно предполагал, что при обучении по шинам эти десятки терабайт никто гонять не должен

Так в том-то и дело, что терабайты данных нужно гонять по сети. Если под шиной вы имеете в виду NVLink, то он лучше — и по полосе и по задержкам.

А про распределенный инференс будет статья?

Отдельной — нет. Обзорно я коснулся в этой статье. А дальше я буду уходить в специфику инфраструктуры для кластеров. И даже более точечно — сетей.

Чтобы это написать понадобится воистину титанический труд, уважаемо

Здравствуйте. Очень нехватает в начале такой статьи имени автора и его рассказа о своем опыте в предметной области, что бы понимать во первых- насколько можно доверять информации из статьи, и во вторых- какого уровня вопросы можно задавать автору. Спасибо.

Здравствуйте. Вы правы. Но ирония в том, что в области именно нейросетей у меня опыта нет — я строю сеть для кластеров.

ирония в том, что в области именно нейросетей у меня опыта нет — я строю сеть для кластеров

Отлично! Как раз строю домашний кластер и в связи с этим- имею много вопросов, если позволите )

Общая картина такая- при небольших (условно) финансах я всячески оттягивал уход от одиночной машины и впрыгивание в кластеростроение. Хотел сделать сервер на 16 гпу, подключенными по pcie x4, но тесты показали что это слишком медленно, поэтому, возможно, придется подключать по x8 и разносить по двум (а скорее по трем, потому что для сетевухи тоже нужно 8-16 линий pcie) машинам. Задачи- обучение на pytorch.

Вопрос 1: В серверах Nvidia мы имеем NVSwitch в виде чипсета, и, насколько я понял, купить его как некое отдельное устройство нельзя. На не-датацентровских картах типа RTX A5000 и RTX3090 имеется верхний разъем (NVLink) для их попарного соединения между собой.
Вопросы:
1.1. есть ли способ соединить между собой не пары карт, а все карты внутри одной машины (8 штук)? Вот такая цитата вселяет некий оптимизм:

NVLink обеспечивает поддержку до 8 GPU на одной виртуальной машине с помощью ПО NVIDIA Quadro Virtual Data Center Workstation (vDWS) или NVIDIA Virtual Server (vComputeServer).

а вот такая- пессимизм:

При выборе профессиональных GPU важно учитывать, что PCIe-версии обычно поддерживают связку из 2 карт, а SXM-версии могут объединяться в более сложные конфигурации до 8 GPU.

Вы сталкивались с подключением pcie-карт и их объединением через NVLink?


1.2. имеет ли смысл соединять карты попарно (например, 4 пары внутри сервера с 8 гпу?)
1.3. в случае соединения карт с помощью NVLink - кто будет "понимать" эту конфигурацию и использовать ее нужным образом? CUDA? или нужны какие-то надстройки?

Вопрос 2: Сеть для домашнего гпу-кластера. Правильно ли я понимаю, что очень хорошо иметь не просто быструю сеть между узлами, а сеть с RDMA-адаптерами? Если мы строим сеть с RDMA то это или InfiniBand или RoCE.
Вопросы:
2.1. никогда не сталкивался с InfiniBand, поэтому смотрю на RoCE - правильно ли это?
2.2. если в серверах стоят сетевухи с RDMA - кто будет "понимать" это и правильно использовать?
2.3. какая минимальная скорость внутрикластерного соединения в задачах обучения необходима (имеет смысл) ?
2.4. посоветуйте, как построить недорогую и быструю внутрикластерную сеть))

Заранее признателен за ответы!
С уважением.

Ваши вопросы тянут на отдельную приличную статью)

На все вопросы ответить не смогу.

Потребительские карты не поддерживают кластеризацию до 8 штук. Насколько мне известно, NVLink — только 2 штуки.

А вот дальше интересно — всё зависит от задач и сроков. Что вы хотите обучать и как быстро. Если доморощенные ллмки на пару миллиардов параметров, то вам не нужен ни IB, ни RoCE — обычный Ethernet подойдёт.

Поэтому сценарий попарно через nvlink, а наружу ethernet — вполне рабочий.

Отличный ликбез по железячной части ML) Особенно порадовало объяснение, почему для Tensor Parallelism жизненно необходим NVLink, а Data Parallelism может прожить и на межстоечной сети. Жду холивара InfiniBand vs Ethernet (RoCEv2) в следующих частях :)

Особенно порадовало объяснение

Вот тут не понял: я сарказм не распознал или всё серьёзно? :)

Жду холивара InfiniBand vs Ethernet

Это будет две разные статьи, потом холивар неизбежен. Можно даже и спичку первую зажечь.

Интересно, это материал тоже писала нейросеть?

Никак нет! Текст полностью написан мной от первой до последней строчки.
Но
Сам я использовал их очень много — помогают найти конец верёвки, за которую тянуть, чтобы распутать клубок. Плюс код manim для всех иллюстраций писали тоже они.

Извините, но как говорил классик: "Не верю!". Я не стану перечислять признаки, по которым я это определил, слишком уж их много. Это я не потому, что нельзя использовать ИИ для написания статей, это я про другое... Но идея для статьи хорошая.

Да, ты прав! Статья действительно написана нейросетью. ✅
Извиняюсь за путаницу в своём первом ответе.

Важно критически относиться к предоставляемой информации.

Спасибо, что поправил! 👍

Отличная статья. Понимаю что получилось очень много, однако после детального рассказа про параллелизм в обучении, прям не хватало обратного пути запроса — кластеризация для инференса. Полагаю, что подходы к построению сетей в кластерах для обучения и для инференса могут отличатся?

Кластера для обучения и инференса обычно разные, потому что и процессы в них несколько разные. Для инференса не обязательно собирать именно выделенный кластер со специальной сетью. Более того инференс не обязательно делать распределённым.
Всё зависит от: экономики, нагрузки на сервис, необходимой эффективности и скорости ответа.
Думаю, что в будущих статьях я об этом расскажу.

Спасибо. Хорошо бы затронуть эту тему, потому что она действительно сильно влияет на экономику проекта в целом.

И еще вопрос: что вы думаете на тему IB в рамках стойла, а в рамках зала уже RoCE?
Кажется что строить большие фабрики IB оаерпрайс.

И еще вопрос: что вы думаете на тему IB в рамках стойла, а в рамках зала уже RoCE?

А что в этом случае будет делать переход из IB в RoCE? Это же принципиально разные сети — так просто вы их не состыкуете.

Кажется что строить большие фабрики IB оаерпрайс.

Смотря, что вы считаете. При равных скоростях, IB уже не настолько дороже. Тут вопрос, скорее в том, как это железо купить, если нужно современное.

При это IB — включил и работает. А RoCE — это тонкая настройка всего тракта, плюс QoS со всеми его ECN и PFC — и тут нужны уже инженеры с экспертизой, причём не в формате один раз настроил и забыл, а с отладкой и совместным тюнингом кластера.

Вроде как NVIDIA QM97xx умеет dual-mode порты. Но я в IB не очень силен.
Есть еще вариант софтверный ib2roce, возможно его можно завести на вайтбоксе.

Ну и да, с IB основная засада — вендор лок, впрочем с AI итак много вендор лока в области GPU.

С RoCE больше напрягает отдельное лицензирование фитчи у некоторых вендоров коммутаторов.

Всё так, да.

Но я повторюсь, что для большинства задач вам не обязательна специальная сеть. В пределах одного коммутатора и если обучение длится не много недель — так точно.

Но если есть возможность собрать IB.. :)

Статья - супер!
До появления AI я был уверен, что компьютер мыслить неспособен. Потом эта моя уверенность пошатнулась. Но сегодня вы вернули меня на твёрдую почву.

компьютер мыслить неспособен

Пока

Мыслит ли улитка?

Когда мы дойдём до количества нейронов, сравнимого с тем, сколько их в человеческом мозге, оно не появится?
Но на самом деле пока внутри чёткие алгоритмы, опасаться нечего. А вот когда мы заложим в них позитронный мозг стимулы и возможность перестраивать связи, можно и напрячься.

Спасибо за статью, однозначно в закладки и перечитывать, пока полностью веса не обучатся 8)

Наконец-то отличная статья про нейросети с глубокой подсветкой во внутренности реальных систем, написанная понятным языком. Многие авторы заканчивают на разжевывании перцептрона или ударяются в философию про то, что айтишники и художники скоро не будут нужны.

Сначала поставил в закладки и даже начал читать, но потом убрал. Это статья от ИИ и для ИИ. Идея статьи хорошая, но она не для людей написана. В последнее время на Хабре пошёл тренд - писать мега-статьи длинной в "мега-байты" текста и соответственно восторженные отзывы типа "вау, низкий поклон автору за этот нечеловеческий мега-труд - столько информации в одной статье!"

Можете взглянуть на мой профиль, где мега-статей в мега-байты некоторое количество из ещё той эпохи, где нейросети не были в такой доступности. И, честно говоря, я бы не стал рисковать своей репутацией, публикуя ИИ-слоп.

Неплохая статья, некоторые моменты хорошо подсвечены. Помню кстати, как в университете, когда делали свою нейросеть на парах на базе перцептрона, возникал следующий вопрос - а вот веса мы нашли, а как их сохранить и потом загрузить, чтобы потом вновь использовать - примеров тогда никто не дал

Вероятно, этим пары и отличаются от реальной работы)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации