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

Если серьезно, то не очень понятно, как происходит вот этот ключевой момент:
в первом скрытом слое зажигаются те нейроны, которые определяют разные простые формы
то есть там есть какой-то сумматор?
а вы не хотите исправить свои опечатки?
в нейросетях нет никакой магии — это просто множество простых операций над числами, которые выполняются на компьютерах со специальными чипами.
Так ни в чём нет никакой магии. Человеческая жизнь это просто множество химических процессов. А человеческое сознание - это такая же нейросеть, только аналоговая, ещё проще. Только вот крошечная нейросеть из 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) в следующих частях :)
Интересно, это материал тоже писала нейросеть?
Никак нет! Текст полностью написан мной от первой до последней строчки.
Но
Сам я использовал их очень много — помогают найти конец верёвки, за которую тянуть, чтобы распутать клубок. Плюс код 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 больше напрягает отдельное лицензирование фитчи у некоторых вендоров коммутаторов.
Статья - супер!
До появления AI я был уверен, что компьютер мыслить неспособен. Потом эта моя уверенность пошатнулась. Но сегодня вы вернули меня на твёрдую почву.
компьютер мыслить неспособен
Пока
Мыслит ли улитка?
Когда мы дойдём до количества нейронов, сравнимого с тем, сколько их в человеческом мозге, оно не появится?
Но на самом деле пока внутри чёткие алгоритмы, опасаться нечего. А вот когда мы заложим в них позитронный мозг стимулы и возможность перестраивать связи, можно и напрячься.
Спасибо за статью, однозначно в закладки и перечитывать, пока полностью веса не обучатся 8)
Отличная шутка)
Я буду от этом, кстати, рассказывать через месяц в Новосибирске. И там же у нас ещё будут мастер-классы по практическому использованию LLM и MCP)
Наконец-то отличная статья про нейросети с глубокой подсветкой во внутренности реальных систем, написанная понятным языком. Многие авторы заканчивают на разжевывании перцептрона или ударяются в философию про то, что айтишники и художники скоро не будут нужны.
Сначала поставил в закладки и даже начал читать, но потом убрал. Это статья от ИИ и для ИИ. Идея статьи хорошая, но она не для людей написана. В последнее время на Хабре пошёл тренд - писать мега-статьи длинной в "мега-байты" текста и соответственно восторженные отзывы типа "вау, низкий поклон автору за этот нечеловеческий мега-труд - столько информации в одной статье!"
Неплохая статья, некоторые моменты хорошо подсвечены. Помню кстати, как в университете, когда делали свою нейросеть на парах на базе перцептрона, возникал следующий вопрос - а вот веса мы нашли, а как их сохранить и потом загрузить, чтобы потом вновь использовать - примеров тогда никто не дал
Возник такой вопрос: если в 2 пустых чатах задать один и тот же вопрос - ответ же не юудет полностью идентичным? Это значит что есть еще какой-то случайный параметр который влияет на ответ. Насколько я знаю при генерации картинок есть случайное зерное seed, которое и влияет на непохожесть ответов. В llm есть такое?
В статье уже упомянут параметр температуры, который, по факту, являясь параметром в softmax, вносит некий разброс в вероятности следующего токена. Грубо говоря, при нулевой температуре, вероятность самого, хм, вероятного токена будет 1, а остальных - 0.
При более высокой - вероятность остальных токенов повышается. Следующий токен выбирается с помощью ГСЧ, для которого есть seed разумеется. Это наглядно объясняет 3Blue1Brown в https://www.youtube.com/watch?v=wjZofJX0v4M
Так что в теории, при нулевой температуре, ответы в разных чатах будут одинаковыми. Но это в теории, в математической абстракции. На практике, как всегда, бывают нюансы, в основном от того, что всё заоптимизировано вусмерть.
Из того, с чем сталкивался сам:
В зависимости от того, в одиночку обрабатывается запрос, или в батче с другими, да даже в зависимости от размера батча, могут быть использованы разные алгоритмы для перемножения матриц и прочего (для разных размерностей матриц некоторые алгоритмы существенно быстрее). С небольшими отличиями в числовой точности.
Также из-за распределения вычислений по разным GPU, порядок их объединения в том же all-reduce может зависить от таймингов, а из-за представления чисел с плавающей точкой, от перемены мест слагаемых может поменяться результат: если сложить два очень маленьких числа, а потом прибавить большое, или наоборот, взять сначала большое и по очереди прибавлять к нему маленькие, результат может немного отличаться.
Да, там миллионы оптимизаций в продакшене. То же расширение до FP32 во время обучения в то время, как сама модель FP16, чтобы размер был не слишком большим. А при обучении важно, чтобы не терялись очень маленькие инкременты.
Плюс в агентских схемах к промпту подмешивается столько, что ожидать двух одинаковых результатов даже в разных чатах не приходится.
В общем согласен, что по факту ответ управляется не только температурой.
Нейро сети для самых маленьких. Часть нулевая. Обзорная