Pull to refresh
2
0.3
Садовников Антон Петрович @Siddthartha

Developer

Send message

Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода

Level of difficultyHard
Reading time15 min
Views7.7K

Совершать невозможное и раздавать пинки здравому смыслу — в этом и состоит жизнь членов Гуррен-Дана! (C) Камина

Эта статья вступает в техническую полемику со статьей 2015 года за авторством Atakua, подходы из которой я и атакую. Atakua исследует 7 видов интерпретаторов байткода, но делает это без уважения - быстрейшей оказывается двоичная трансляция, которая, по сути, уже не интерпретатор байткода, а форма Ahead-Of-Time компилятора. Эта двоичная трансляция транслирует байткод в машинный код, представляющий собой цепочку вызовов скомпилированных сервисных процедур. Тех самых, что в интерпретаторе байткода отвечают за выполнение каждого опкода.

Но Atakua не выжал из интерпретаторов байткода всю скорость которая возможна. Так что эта статья - туториал: как написать интерпретатор байткода, который может обгонять JIT/AOT-компиляцию по скорости. Интересно? Читайте дальше!

Бенчмарк прилагается. Будет немного хардкора и ни одной сгенерированной нейросетью картинки!

Читать далее
Total votes 86: ↑83 and ↓3+100
Comments93

Операции машинного обучения (MLOps) для начинающих: полное внедрение проекта

Level of difficultyMedium
Reading time21 min
Views4.2K

Разработка, развёртывание и поддержка моделей машинного обучения в продакшене может быть сложной и трудоёмкой задачей. Здесь на помощь приходит Machine Learning Operations (MLOps) — набор практик, который автоматизирует управление ML-процессами и упрощает развёртывание моделей. В этой статье я расскажу о некоторых основных практиках и инструментах MLOps на примере реализации проекта от начала до конца. Это поможет вам эффективнее управлять ML-проектами, начиная с разработки и заканчивая мониторингом в продакшене.

Прочитав эту статью, вы узнаете, как:

— Использовать DVC для версионирования данных.
— Отслеживать логи, артефакты и регистрировать версии моделей с помощью MLflow.
— Развернуть модель с помощью FastAPI, Docker и AWS ECS.
— Отслеживать модель в продакшене с помощью Evidently AI.

Читать далее
Total votes 17: ↑17 and ↓0+22
Comments3

Распознавание ж/д пикетных столбиков по фотографиям с беспилотника на основе PyTorch и YOLOv5

Level of difficultyMedium
Reading time21 min
Views1.9K

Тенденция применения беспилотных летательных аппаратов (БПЛА) продолжает развиваться и процветать. Оснащение беспилотников камерами и навигационным оборудованием геодезического класса точности позволяет получать ортофотопланы с сантиметровой точностью. Расширить возможности БПЛА можно применив нейронные сети, способные распознавать объекты на фотографиях. В статье рассмотрен процесс подготовки фотографий с БПЛА, разметки объектов для обучения нейронной сети, ее обучения и получения результата в виде выявления объекта на новом фото на реальном участке железнодорожного перегона, определяемые объекты — пикетные столбики. Исходный код обработки данных и обучения модели выгружен на GitHub.

Читать далее
Total votes 12: ↑10 and ↓2+13
Comments14

Что такое 50% cpu?

Level of difficultyEasy
Reading time3 min
Views42K

Если у вас на машине стрелочка показывает, что у вас осталась половина бака, то у вас точно осталась половина бака? На самом деле больше, так как современные машины врут и топлива еще немного есть, даже когда стрелка на нуле - забота об альтернативно одаренных водителях. А если сервер показывает 50% cpu, то сколько ресурсов у нас осталось?

Для многих ответ ясен, и это не 50%. Поэтому извините, если многие вещи будут вам очевидны. А вот для менеджеров, например, которые планируют ресурсы, это может быть открытием.

Читать далее
Total votes 102: ↑99 and ↓3+123
Comments66

Использование Rust в серверах, написанных на других языках, для повышения производительности

Level of difficultyEasy
Reading time13 min
Views3.2K

В этой статье мы рассмотрим несколько стратегий по постепенному добавлению Rust в сервер, написанный на другом языке, например JavaScript, Python, Java, Go, PHP, Ruby и т. д. Один из возможных кейсов для подобного добавления — вы профилировали сервер, нашли «горячую» функцию, не соответствующую требованиям производительности из‑за боттлнека по CPU, а обычные техники мемоизации или оптимизации алгоритма были бы невозможны или малоэффективны по той или иной причине. После чего вы пришли к выводу, что стоит посмотреть в сторону реализации данной функции на что‑то написанное на более производительном языке, например на Rust. Отлично, данная статья для вас.

Читать далее
Total votes 31: ↑31 and ↓0+36
Comments13

DE-1. DIY ассистент на LLM

Level of difficultyMedium
Reading time9 min
Views8K

Привет Хабр, let's set the future.

Недавно у меня появилась идея фикс: 'Хочу собственного AI ассистента'. Казалось бы, нет никаких проблем - рынок предлагает массу готовых решений. Но моя вечная паранойя про утечку данных и стремление сделать все самому взяли верх. Решил поэкспериментировать и собрать ассистента своими руками, да еще как-то с учетом будущих возможностей для гибкой настройки. Времени на оптимизацию производительности и эстетический вид кода у меня не было, 'хочу здесь и сейчас', поэтому let me introduce this shit.

Читать далее
Total votes 19: ↑19 and ↓0+22
Comments7

Как я обучил нейросеть генерировать постеры с Нивой

Level of difficultyEasy
Reading time2 min
Views8.4K

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

Было решено сгенерировать изображения с помощью нейросети. Опробовал Dall‑E и Midjorney, Flux — все не то, нейросети никогда не видели нашей отечественной Нивы.

Подумав что я же инженер, решил дообучить Flux на открытых фотографиях Нивы из интернета.

Читать далее
Total votes 19: ↑15 and ↓4+16
Comments8

Запускаем Yolo на пятирублёвой монете или Luckfox Pico Mini

Level of difficultyMedium
Reading time29 min
Views12K

В данной статье речь пойдет про использование очень маленькой Luckfox Pico Mini. Я расскажу про особенности платы, её настройку, а также о том как запускать на ней нейронные сети для детекции объектов с камеры.

Мне удалось добиться скорости детекции в 15 FPS (или даже 50!), результат, который по силам далеко не каждому одноплатнику.

Читать далее
Total votes 113: ↑113 and ↓0+146
Comments54

Wolfram Natural Language Understanding или спасение для студентов

Level of difficultyMedium
Reading time12 min
Views5.2K

Wolfram — крутая штука. Сколько школьников получило из-за него пятерку, а сколько студентов зачет, не сосчитать...

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

Хоть скопируй лабораторную по физике...

Поэтому главной загадкой этого сервиса становится перевод неподготовленной информации студента в удобоваримый для алгоритмов вариант данных.

Языковая модель (NLU) — разгадка.

Читать далее
Total votes 6: ↑5 and ↓1+8
Comments4

rustsn — Open Source проект генерации кода и взаимодействия с уже существующим через LLM

Level of difficultyEasy
Reading time3 min
Views3.6K

Я работал над созданием инструмента под названием rustsn, который позволяет генерировать, компилировать и тестировать код с использованием LLM (Large Language Models). Изначально идея заключалась в том, чтобы автоматизировать процесс написания небольших фрагментов кода — так называемых сниппетов — для разных языков программирования на основе объяснений, предоставленных пользователем. Этот инструмент стал развиваться и обрастать новыми возможностями, такими как генерация полного кода для приложений и объяснение существующего кода на основе векторных представлений (эмбеддингов).

Когда я только начинал работу над rustsn, основной задачей было добиться того, чтобы пользователь мог, например, просто описать словами, какую функцию ему нужно написать, а система автоматически генерировала бы рабочий код. Я начал с Rust, поскольку этот язык обладает мощными возможностями для работы с типами и тестированием, что делает его идеальным для написания безопасного и производительного кода. Позже я добавил поддержку других языков, таких как JavaScript, Python, и TypeScript.

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

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

Читать далее
Total votes 12: ↑10 and ↓2+10
Comments7

Улучшенная глобальная настройка в Playwright с использованием авторизации и проектными зависимостями

Level of difficultyMedium
Reading time10 min
Views734

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

Для решения этой проблемы создаются проектные зависимости.

Читать далее
Total votes 14: ↑13 and ↓1+17
Comments0

Визуальные трансформеры (ViT)

Level of difficultyMedium
Reading time18 min
Views1.7K

С момента своего появления в 2017 году в публикации Attention is All You Need трансформеры стали доминирующим подходом в обработке естественного языка. В 2021 году в статье An Image is Worth 16x16 Words трансформеры были успешно адаптированы для задач компьютерного зрения. С тех пор для компьютерного зрения было предложено множество архитектур на основе трансформеров.

В этой статье мы рассмотрим трансформер зрения (Vision Transformer, ViT) в том виде, в котором он был представлен во второй статье. Она включает в себя открытый код ViT, а также концептуальные объяснения компонентов. Реализация ViT, рассмотренная в статье, выполнена с использованием пакета PyTorch.

Читать далее
Total votes 12: ↑11 and ↓1+13
Comments0

Нейронная сеть учится понимать сигналы светофора

Level of difficultyMedium
Reading time21 min
Views3.1K

Сегодня нейронные сети всё чаще используются для решения различных задач – от распознавания лиц до управления беспилотными автомобилями. Однако для тех, кто только начинает знакомиться с этой технологией, может показаться, что процесс обучения нейросети — это что-то сложное и непонятное.

Задача проста: у нас есть светофор, и мы хотим научить модель решать, можно ли продолжать движение на перекрестке в зависимости от того, какой сигнал светофора горит. В статье использованы базовые принципы машинного обучения и простой код на Python, чтобы построить модель, которая способна интерпретировать показания светофора, закодированные в виде числовых данных. Приведен как «рукописный» код обучения нейронной сети, так и с применением библиотеки TensorFlow. Проведено несколько экспериментов с разными параметрами сети. В конце на десерт самое интересное – дадим обученной сети показания светофоров, которых не бывает в реальной жизни, такие как зеленый и красный горящие одновременно, посмотрим, что на это скажет сеть.

Читать далее
Total votes 6: ↑5 and ↓1+7
Comments12

Обучение GigaChat с контекстом в сотни тысяч токенов

Level of difficultyMedium
Reading time13 min
Views3.1K

Помните фразу «640 килобайт памяти хватит всем»? Запросы человечества вечно растут, а индустрии надо поспевать.

Вот и с языковыми моделями так. Ещё недавно мы все удивлялись тому, на что они стали способны. А теперь нам этого мало: «ну хорошо, а может модель в диалоге учитывать то, что я сказал сотни реплик назад?»

Весной на нашей конференции I'ML Евгений Косарев (SberDevices) рассказал о том, как к увеличению контекста подошли при работе над GigaChat. А сейчас мы публикуем текстовую расшифровку его доклада. Ссылки на его видеозапись тоже прилагаем: YouTube, VK Видео.

Читать далее
Total votes 11: ↑11 and ↓0+18
Comments1

Пока не исправили — модифицируй, или Анализ расширений атаки уклонения для LLM

Level of difficultyMedium
Reading time10 min
Views1.6K

Добрый день, уважаемые читатели Хабра. В связи с бурным развитием генеративных моделей и реализованных на них чат‑ботов (ChatGPT, Gemini, Bard, Notion AI, Compose AI, Poe, Phind) у пользователя появляется ложное чувство, что модели стали умнее, защищённее и, в целом, ближе к совершенству, сравнимы с человеческим интеллектом. Отсюда мы получаем целый пласт заблуждений. Например, что модели нас «чувствуют», «понимают», ведь мы выкладываем для них столько информации о себе, начиная от стилистики нашего письма, что уже является неким цифровым отпечатком нашей личности, и заканчивая оценкой их собственной работы. На самом деле это миф. И трендом 2023–2024 годов стало обширное внимание публики к XAI:

как они (генеративные модели) устроены и как они принимают решения;

как проводятся атаки уклонения (склонение моделей к неверной выдаче);

как эти атаки (уклонения) связаны с другими атаками на LLM и какие они могут быть для эскалации деструктивного поведения системы;

с какой позиции верно интерпретировать выход генеративной модели;

разработка системы эшелонированной защиты моделей;

разработка системы внутреннего критика для модели.

Для начала начнём с существующих атак и их анализа. Заинтересованных приглашаем под кат.

Читать далее
Total votes 10: ↑9 and ↓1+20
Comments1

Spanner. NewSQL хранилище от Google

Reading time4 min
Views25K
Spannerгеографически распределенная высокомасштабируемая мультиверсионная база данных с поддержкой распределенных транзакций. Хранилище было разработана инженерами Google для внутренних сервисов корпорации. Research paper [8], описывающий базовые принципы и архитектуру Spanner, был представлен на научной конференции 10th USENIX Symposium on Operating Systems Design and Implementation в 2012 году.

Spanner является эволюционным развитием NoSQL-предшественника – Google Bigtable. Сам же c Spanner относят к семейству NewSQL-решений. В research paper [8] заявляется, что дизайн Spanner позволяет системе масштабироваться на миллионы вычислительных узлов через сотни дата-центров и работать с триллионами строк данных.



Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments11

Мал, да удал. Анбоксинг микровиртуалки Firecracker

Reading time11 min
Views13K
Записывайте рецепт микровиртуалок Firecracker. Берем два популярных метода изоляции многопользовательской нагрузки — виртуальные машины и контейнеры. Выжимаем лучшее из обоих подходов, максимально упрощаем, тестируем на настоящем хайлоаде. В итоге получаем непробиваемую изоляцию виртуалок, которые можно запускать за сотни миллисекунд. Именно это решение работает под капотом AWS Lambda и Fargate, запуская в облаке миллионы serverless-функций и контейнеров каждую секунду. Оно называется Firecracker.



Этот инструмент микровиртуализации доступен в OpenSource. Если ваши задачи требуют мульти-тенантной изоляции, (ну, например, вы решили сделать собственное облако), Firecracker — это то, что надо.

Василий Пантюхин, архитектор Amazon Web Services, расскажет об архитектуре Firecracker, о том, как он используется AWS Lambda, сравнит его с альтернативными решениями и приведет примеры интеграции.

Дисклеймер: всё, что ниже — это личное мнение Василия, и оно может не совпадать с позицией Amazon Web Services.
Total votes 37: ↑35 and ↓2+33
Comments3

Готовим по рецепту: CI/CD в MLOps

Level of difficultyMedium
Reading time15 min
Views4.5K

Всем привет! Меня зовут Роза и я MLOps-инженер в Купере. Под катом расскажу, как построить CI/CD-пайплайн для ML-приложений с нуля, поэтапно и без боли. Ну почти :)

Раньше очень часто работа DS-инженера заканчивалась на подготовке кода модели в Jupyter-ноутбуке, а дальше его подхватывали команды разработки и доводили до продакшена. У такого подхода есть минусы. Например, если произойдёт инцидент, непонятно кто ответственен за сервис  — команда разработки или авторы ML-модели?

К счастью, культура разработки меняется: теперь ML-инженер — это специалист, который разрабатывает свой ML-сервис на всем пути от общения с бизнесом до продакшена. Этот подход хорошо описывает принцип «you build it, you run it»: кто построил модель, тот её и запускает. Как раз в этом здорово помогает CI/CD.

Погнали!
Total votes 20: ↑18 and ↓2+21
Comments11

Создание инструмента генерации кода с помощью Rust и локальных LLM от Ollama

Level of difficultyMedium
Reading time4 min
Views4K

Это реакция на выпуск ChatGPT o-preview. Попытка добавить логику в LLM с открытым исходным кодом, которые можно запустить дома на скромном GPU или даже на CPU

Сейчас я работаю над инструментом на основе Rust, который автоматизирует генерацию, компиляцию и тестирование кода с использованием больших языковых моделей (LLM). Идея заключается в том, чтобы взаимодействовать с LLM для генерации кода на основе предоставленных пользователем объяснений, компилировать код, разрешать зависимости и запускать тесты, чтобы убедиться, что все работает так, как ожидается.

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

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

Первый шаг — получить объяснение от пользователя:

Читать далее
Total votes 8: ↑8 and ↓0+14
Comments13

Генерация AST на Rust

Level of difficultyEasy
Reading time5 min
Views1.5K

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

Читать далее
Total votes 13: ↑11 and ↓2+15
Comments2
1
23 ...

Information

Rating
2,278-th
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science