TheFounder

TheFounder

Здесь будет интересно всем, кто увлекается нейросетями, хочет стать разработчиком, создать свой IT-стартап... Ну, или просто любит и хочет изучать код :)
На Пикабу
146 рейтинг 6 подписчиков 0 подписок 104 поста 0 в горячем
1

Что такое инференс модели?

Что такое инференс модели? IT, Программирование, Машинное обучение, Нейронные сети

Вот ты разработал модель, обучил её на данных, и что теперь?

В реальные условия труда.

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

И тут все зависит от кучи факторов: как построена модель и на каком «железе» всё работает. Особенно проблемно, когда речь идёт о больших языковых моделях (LLM), там замедление инференса ощущается сильнее всего.

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

Tesla вкладывают кучу ресурсов, чтобы инференс их моделей был максимально быстрым: их автопилот делает десятки предсказаний каждую секунду, чтобы безопасно вести машину. И если инференс запаздывает, это может стоить очень дорого.

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

Вообще инференс — это не только про предсказания, но и про оптимизацию. Компании оптимизируют модели так, чтобы они быстро и точно выдавали результаты, даже с огромными объемами данных. Это касается и оптимизации на железе, где используются ускорители, как в Сберклауде, для обработки больших массивов данных в реальном времени.

Короче говоря, инференс — это ключевой момент, когда все труды ML инженера начинают приносить результат. Быстрая и точная работа модели в реальном времени — то, что отличает успешный проект от провального. Поэтому многие компании и тратятся на сжатие моделей или использование ускорителей вроде GPU и TPU, чтобы выжать максимум из инференса. Потому что на практике — скорость и точность имеют значение.

Показать полностью 1
2

Марковские цепи для ML?

Марковские цепи для ML? Программирование, IT, Нейронные сети, Машинное обучение, Длиннопост

Марковские цепи и скрытые марковские модели (HMM – Hidden Markov Models)  — топ инструмент для последовательных данных.

Они позволяют анализировать системы, которые можно описать как последовательности состояний, где переход из одного состояния в другое зависит только от текущего состояния, а не от всех предыдущих состояний.

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

Примером может служить система прогнозирования погоды, где текущее состояние (например, "солнечно") влияет на вероятность того, что завтра будет "дождливо", "облачно" или "солнечно", но не учитывается, какое было состояние погоды за несколько дней до этого.

Каждый переход между состояниями можно описать вероятностной матрицей переходов, где каждая строка соответствует текущему состоянию, а каждая колонка – вероятности перехода в следующее состояние.

Однако в реальных приложениях не всегда можно напрямую наблюдать состояние системы.

В таких случаях используется скрытая марковская модель (HMM), где состояния системы являются скрытыми, но мы можем наблюдать некоторое внешнее проявление этих состояний (выходные данные).

В HMM есть две основные компоненты: первая – это скрытые состояния (например, эмоциональное состояние говорящего при распознавании речи), а вторая – наблюдаемые данные, которые связаны с этими скрытыми состояниями (например, акустические сигналы). 🔊

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

Пример работы HMM можно рассмотреть на задаче распознавания речи. Пусть скрытые состояния соответствуют фонемам (единицы произношения речи), а наблюдения – акустическим сигналам.

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

В такой задаче используются алгоритмы для поиска наиболее вероятной последовательности скрытых состояний (например, алгоритм Витерби), а также для вычисления общей вероятности наблюдаемой последовательности или для обучения параметров модели.

С точки зрения программной реализации, HMM представляют собой вероятностные графовые модели.

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

Алгоритмы на основе метода максимума правдоподобия, тот же алгоритм Баума-Велша (модифицированный алгоритм Expectation-Maximization, или EM), применяются для обучения HMM, когда известна структура модели, но неизвестны параметры вероятностей переходов и наблюдений.

Основная сложность программирования HMM заключается в вычислительной эффективности, особенно если количество скрытых состояний или длина последовательностей велика.

Кстати, реализовать HHM можно, естественно, и в TensorFlow.

Показать полностью 1

Да забей на эту свою математику!

Да забей на эту свою математику! Программирование, Нейронные сети, IT, Машинное обучение

Хотя бы пока будешь читать этот пост, потому что сегодня мы поговорим о том самом харде среди софтов. О креативном мышлении.

Почему это самый хардовый софт-скилл?

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

А понимать это нужно. И вот почему:

Любой ML-проект, заточенный под конкретный бизнес, содержит кучу требований, которые еще и меняются по ходу дела. И если у разработчика прокачена креативность, то он напишет такой код, который будет удовлетворять как старые, так и новые требования заказчика.

И как развить креативность?

Есть три способа придумать что-то новенькое: озарение, логика и перебор вариантов. Озарение — это такая штука, что контролировать его невозможно (хотя многие пытаются), так что забудем об этом. Логика вообще не считается креативностью. Вот и остается перебор вариантов. Есть куча методов: майнд-карты, метод шляп, переносы смыслов — пробуйте всё.

Самый способ генерить идеи — это мозговой штурм. Просто накидывай свои мысли, даже самые бредовые. Главное правило — чем больше идей, тем лучше. Потом всё структурируешь. 

Изучай чужой опыт

А вот это уже относится к насмотренности. Именно она помогает развиться вашей креативности. Изучай чужой опыт, много читай как по своей специальности, так и по смежным темам, следи за новинками в дизайне операционных систем, изучай новые подходы в чужих приложениях, ну и… Смотри код от крутых IT-компаний. Опенсорса сейчас хватает)

Поучаствуйте в хакатоне

Самый топовый совет оставили напоследок. И это мы сейчас серьёзно, да)

Только представь: на хакатоне столько всего надо сделать! И так мало на всё это времени… В итоге мозг будет работать на полную катушку, потому что:

  • он в условиях стресса.

  • и ограниченного времени.

Короче, бесценный опыт, который развивает не только креативность, но и коммуникативные навыки, что в нашем деле тоже очень важно :)

Показать полностью 1
0

Объяснятор трансформеров?!

Что же он такого объясняет? LLM модели, которые уже давно вышли из рекуррентных архитектур и вверглись в объятия трансформерных архитектур.

Как мы помним, работают они достаточно непросто с точки зрения организации механизма внимания.

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

С его помощью можно запустить модель GPT-2 непосредственно в браузере и в режиме реального времени взаимодействовать с её механизмом работы.

Инструмент предоставляет возможность вводить собственный текст и наблюдать за тем, как внутренние компоненты и слои модели взаимодействуют между собой для предсказания следующих токенов.

Transformer Explainer позволяет исследовать ключевые элементы: механизмы внимания (self-attention), механизм многоголового внимания, слои нормализации и их роль в обработке последовательностей данных.

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

Тут это можно контролировать.

Представим, что ты работаешь с текстом "Машинное обучение — это захватывающая область". Механизм внимания (self-attention) в модели Transformer позволяет ей понять, какие части этого предложения более важны для предсказания следующего слова.

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

Transformer Explainer позволяет тебе наблюдать, как именно модель распределяет это внимание и какие слова она считает наиболее значимыми на каждом этапе обработки.

Теперь добавим механизм multi-head внимания. В этом случае модель разбивает процесс на несколько "голов" (множество параллельных операций), каждая из которых может сосредоточиться на различных аспектах предложения.

Одна “голова” может анализировать связь между "область" и "машинное обучение", другая — связь между "захватывающая" и "область".

В итоге каждая "голова" даёт своё видение контекста, и модель комбинирует эти представления для точного предсказания следующего слова.

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

Transformer Explainer даёт возможность увидеть, как эти слои нормализации выравнивают работу модели, делая её более устойчивой к ошибкам и оптимизируя качество предсказаний. В общем-то очень крутая штука.

Поиграться можно по ссылке

Показать полностью
1

BitNet: экстремальное квантование языковых моделей

BitNet: экстремальное квантование языковых моделей Программирование, IT, Нейронные сети, Машинное обучение

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

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

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

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

В последнее время ради оптимизции громоздких LLM систем, разработчики все больше упираются в совсем разные способы тюнинга. И тут перед нами экстремальная квантизация. Максимальное снижение битности данных.

Основной принцип заключается в использовании низкоразрядных представлений (1-бит, 2-бит, 4-бит) для весов и активаций с классических 16/32 битных разрядностей (FP16/FP32).

Тут же мы имеем дело с безумными 1,58 бит!

Каждый параметр описывается только тремя числами (-1,0,1). Эта архитектура использует вычисления сложения INT8 при выполнении умножения матриц, в отличие от операций сложения и умножения FP16 LLaMA LLM.

BitNet заменяет в трансформерах линейные слои внутри MH-Attention и FF-Networks, т.е битлинейные слои, которые используют троичную точность – вместо них используется как раз таки BitLinear – они и квантуют веса до -1,0 и 1, разбивая активации до 8-битной точности.

И это приводит к одному важному нюансу.

Такую модель нужно обучать с самого начала.

Т.е не получится провести квантование после стадии обучения. С другой стороны, вы получите чуть ли не мобильную версию крупной LLM. Не круто ли?


Попробовать потестить квантование BitNet можно – тут.

Показать полностью 1
1

Почему ML должно стать не только твоей профессией, но и хобби?

Почему ML должно стать не только твоей профессией, но и хобби? Программирование, IT, Нейронные сети, Машинное обучение

Когда работаешь в ML, нельзя просто встать утром, отработать 8 часов и забыть обо всем до следующего дня. Машинное обучение — это больше, чем профессия, это состояние постоянного потока, развития и... да, фанатизма.

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

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

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

Какой-то хардкор, да? Но фишка в том, что когда тебе реально нравится то, что ты делаешь, это перестает быть работой. Это превращается в бесконечный эксперимент, в котором ты не хочешь останавливаться.

Безумие. А вместе с тем и постоянное развитие.

Потому что это не та область, где ты можешь однажды остановиться и сказать: "Ну всё, я выучил всё, что нужно". Такого не будет никогда.

Каждую неделю выходит что-то новое: методы, фреймворки, исследования. Обновляются модели, а то и семейства моделей.

А если ты ещё и сам стараешься что-то своё создать, экспериментировать, то ты просто на шаг впереди остальных.

Можно так сказать: если ML для тебя только работа — ты будешь вечно догонять. Но если ты подходишь к этому с личным интересом, как к хобби, у тебя всегда будет внутренний двигатель, который заставит тебя идти вперед, искать новое, изучать, совершенствовать свои навыки. И в этом весь прикол. Ты сам не заметишь, как перестанешь работать "на галочку" и начнешь кайфовать от процесса.

ML как хобби — это источник постоянной мотивации. Ты не ждешь выходных, чтобы оторваться от задач. Ты ждешь свободного времени, чтобы поковыряться в своём пет-проекте. Потому что это твоё. И оно тебя заряжает.

Показать полностью 1

Как айтишнику прокачать логическое мышление?

Как айтишнику прокачать логическое мышление? Программирование, Нейронные сети, IT, Машинное обучение

Логика — это та самая база, на которой у нас тут все держится. Потому что в любом проекте ценятся модели, работу которых ты можешь объяснить буквально на пальцах. Да и на собесах техлиды кайфуют, когда ты максимально просто и логично отвечаешь на вопросы.

И вот, как это “логично” можно прокачать:

Разбивай задачи на подзадачи

Говорили и не раз, что когда ты видишь гигантскую задачу, мозг впадает в ступор. Логическое мышление начинается с того, что ты разбиваешь задачку на действия и последовательно решаешь каждое.

Начни с простого: возьми любую задачу и разложи её на подзадачи.

Прокачивай математику

Да, опять она, родная наша. Но для ML это основа. Потому что в ней зашита куча полезных паттернов, которые напрямую влияют на твою способность к анализу. Начни каждый вечер хотя бы по часу решать задачки на leadcode (https://leetcode.com/). Уже через неделю почувствуешь, как прокачался.

Практикуйся в написании “чистого” кода

Чем лучше код, тем больше в нём логики. Делай рефакторинг старых д/з и думай, как можно оптимизировать алгоритмы.

Экспериментируй с новыми фреймворками

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

Научись объяснять сложные термины из машинного обучения простыми словами

Причём нужно объяснять это тем, кто вообще не шарит за ML. Если повезло с друзьями или родственниками, и они готовы тебя слушать, дерзай. В моменты таких разговоров как раз и случаются инсайты. Попробуй, это реально работает.

Показать полностью 1
2

Что такое CoT?

Что такое CoT? Программирование, IT, Нейронные сети, Машинное обучение

Если образно и просто, то это когда ИИ вдруг “решает”, что он не просто алгоритм, а вроде как мыслитель. Потому что вместо того, чтобы мгновенно кинуть ответ на вопрос, он “рассуждает”, выстраивая мыслительную цепочку.

Кстати, само название “CoT” расшифровывается “Chain of Thought”, что в переводе и обозначает “цепочка мыслей”.

В основном это работает на задачках по математике или логике.

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

MMLU (Massive Multitask Language Understanding), кстати, это подтвердил. Этот бенчмарк проверяет модели на задачах из разных областей, и CoT там больше выпендривается, чем реально помогает.

.А теперь главный момент: CoT — это, конечно, классный метод, да и новая GPT o1 с ним работает, но когда дело доходит до выполнения, он частенько лажает по сравнению с символьными солверами.

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

Вот и получается, что инструменты вроде SymPy и Wolfram Mathematica просто уничтожают CoT в задачах с числами и символами. Им не нужно притворяться, что они “думают”, как это делает CoT, они просто решают.

Так что если надо поработать со сложной математическая задачка, лучше взять солвер. А если нужно подумать шаг за шагом, например, над кодом, тогда уже CoT может пригодиться.

Может, это первый шажок в сторону AGI, но не факт, что его хватит. Так что оставим CoT для того, где он хорош — для задач, которые требуют размышления, а не для простых ответов

Показать полностью 1
Отличная работа, все прочитано!