И так, Ozon Tech. #interview#dev
Наверное, первая крупная организация, которая приходит на ум, когда думаешь о работе для C#-программиста. В Озоне и правда очень много всего на шарпе. У нас туда уходили разработчики из дирекции, но и обратный случай был (когда разработчик перешёл в АСЭ из Озона). Так что у меня была одной из первых, куда я подался. Но подавался через знакомства. Хотя, я думаю, что и при обычном отклике по общим каналам мне бы написали. Эйчар отвечала быстро и охотно, но скрининг был скорее номинальным, просто по ключевым технологиям: .NET, PostgreSQL, Kafka итд.
А теперь важный дисклеймер: это первый раз в жизни, когда я пошёл на собеседование, как соискатель. И вообще, резюме я оформил вот только в мае этого года. До АСЭ я много лет работал на аутсорсе, а в АСЭ устроился по приглашению после хакатона, собеседования не было. Так что уже тимлидом я проводил собеседования, но сам их не проходил.
К сожалению, навык прохождения собеседований соотносится с настоящим умением работать программистом очень ортогонально. Я распишу своё мнение по современным процессам найма как-нибудь потом, но достаточно сказать, что для подготовки я в течение двух недель читал книжки и общался с DeepSeek, и без этой подготовки я бы собеседования нигде не прошёл. Хотя, разумеется, двухнедельное чтение книжек не сделали меня ни на йоту лучшим разработчиком, не добавили мне опыта и умений.
После первичного скрининга в Озоне три секции: технический скрининг, большая техническая секция и system design с небольшим фитом в конце (фит это общение с руководителем на предмет того, совпадаете ли вы).
Технический скрининг
Чисто разговорная секция на 40-50 минут. Интервьюер один. Задаёт вопросы общего плана по языку, структурам данных, многопоточности. Ничего неожиданного нет. Я шёл на ведущего разработчика C# (это тимлид), так что нужно быть готовым рассказывать про поколения сборщика мусора и особенности работы IO-bound операций в асинхронном контексте. Секция сугубо академически-теоретическая. Кроме языка была пара вопросов по энтерпрайз-архитектуре и по базам данных, но без копания вглубь.
С моей точки зрения для скрининга всё равно секция чрезмерно подробная, и позже на большой технической секции часть тем повторилась.
Большая техническая секция
Два интервьюера, два часа. Задачи по коду, но не на алгоритмы, а скорее на решение конкретных кейсов. Например, нужно параллельно читать из кэша и из БД (если в кэше нет), как это написать максимально эффективно. Дан шаблон, который нужно заполнить. Параллельно задавали вопросы по теории.
Одна задача по SQL (я решил только с подсказкой). Вообще с чистым SQL в современном энтерпрайзе работают мало и редко. Когда дошли до этой задачи, я честно сказал собеседующим: «В реальной работе, получив такую задачу, я бы изучил документацию по средствам СУБД, которые позволили бы мне её решить, и погонял бы тестовые запросы на предмет правильности и оптимальности». По моим ощущениям, им этот ответ не понравился, и в целом мне показалось, что оценили мои навыки в этой части низко.
И в конце кусочек код-ревью. Когда я сам проводил собеседования, это была моя любимая часть, потому что наш пример кода на ревью содержал сразу большой пласт разнообразных проблем: инъекции, ошибки асинхронности, освобождение неуправляемых ресурсов, безопасность итд. Сразу было видно, с чем человек часто сталкивался, а с чем редко.
Здесь на ревью я стал давать комментарии по кодстайлу, за которым, как тимлид, тоже регулярно следил. Но меня попросили сосредоточиться на проблемах другого рода, и по сути весь код крутился вокруг неверного использования lock. Я увидел эту проблему, предложил решение, но не смог глубоко объяснить, какими особенностями поведения среды выполнения вызвана эта проблема.
Понижение должности
Через пару дней эйчар написала, что на ведущего разработчика (тимлида) они не готовы меня рассмотреть, но готовы на старшего (сеньора). Запомните этот момент. Я согласился. На мой вопрос о том, ниже ли вилка, она ответить не смогла, и сказала, что обсуждать нужно с руководителем.
#cuda
DeepEP is a special communication library for Mixture-of-Experts (MoE) models. It helps these models work faster and more efficiently by improving how data is shared between different parts of the system. DeepEP supports low-precision operations and can handle data transfer between different types of connections, like NVLink and RDMA. This makes it very useful for both training and using AI models, especially when speed is important. Users benefit from faster processing times and better performance overall.
https://github.com/deepseek-ai/DeepEP
#rust#cuda#rust
ZLUDA is a software that lets you run CUDA programs, originally made for NVIDIA GPUs, on AMD Radeon RX 5000 series and newer GPUs without changing the programs. It aims to give near-native performance on non-NVIDIA hardware, making CUDA applications more accessible. Currently, ZLUDA is still being developed and mainly supports Geekbench tests, so it might not work perfectly with all applications yet. It works on Windows and Linux but not on MacOS. If you have an AMD GPU and want to try running CUDA apps without an NVIDIA card, ZLUDA could be very useful as it opens up more hardware options for CUDA software[3][5].
https://github.com/vosen/ZLUDA
🌟CUDA-L2: ИИ научился писать CUDA-ядра эффективнее инженеров NVIDIA.
Исследовательская группа DeepReinforce разработала систему полностью автоматического написания GPU-кода для матричного умножения под названием CUDA-L2.
Этот код работает на 10–30% быстрее, чем cuBLAS и cuBLASLt, а это, на минуточку, уже оптимизированные библиотеки от самой NVIDIA.
Обычно такие библиотеки создаются вручную людьми, которые используют готовые шаблоны ядер. А автотюнеры лишь подкручивают параметры, например, размер тайлов.
Но DeepReinforce считают, что даже критически важные и глубоко оптимизированные задачи, как HGEMM, могут быть улучшены с помощью LLM, работающей в связке с RL.
В системе CUDA-L2 языковая модель буквально пишет исходный код CUDA с нуля для каждого размера матрицы. Она не просто меняет параметры, она может менять структуру кода, циклы, стратегию тайлинга, паддинг и даже свизл-паттерны. А еще, она сама выбирает стиль программирования - будь то сырой CUDA, CuTe, CUTLASS или inline PTX.
Процесс выглядит так: цикл RL запускает сгенерированные ядра на реальном железе, измеряет скорость и корректность, а затем обновляет LLM. Со временем модель выводит свои собственные правила производительности, вместо того чтобы полагаться на знания, заложенные людьми.
В качестве генератора использовалась модель DeepSeek 671B. Ее дополнительно доучили на смеси массива CUDA-ядер и качественном коде из библиотек PyTorch, ATen, CUTLASS и примеров от NVIDIA.
🟡Что это дает на практике
Для претрейна и файнтюна LLM большая часть времени GPU тратится именно на операции матричного умножения HGEMM. Если ускорить эти ядра на те самые 10–30%, которые обещает CUDA-L2, то весь процесс обучения становится заметно дешевле и быстрее.
Поскольку CUDA-L2 обрабатывает около 1000 реальных размеров матриц, а не пару вручную настроенных, ускорение работает для самых разных архитектур. Это значит, что в тот же бюджет на GPU можно вместить больше токенов обучения, больше прогонов SFT или RLHF и т.д.
🟡Тесты
HGEMM-ядра, созданные CUDA-L2, стабильно быстрее стандартных библиотек.
В так называемом "оффлайн-сценарии" CUDA-L2 работает примерно на 17–22% быстрее, чем torch.matmul, cuBLAS и cuBLASLt. Она даже на 11% обгоняет cuBLASLt AutoTuning, который сам по себе уже использует поиск ядра.
А в "серверном", сценарии, который имитирует реальный инференс с паузами между вызовами - разница еще больше: буст в 24–29% по сравнению с torch.matmul и cuBLAS.
Простым рисёрчем проект не ограничен, в репозитории на Github авторы выложили оптимизированные ядра HGEMM A100 для 1000 конфигураций.
В планах: расширение на архитектуры Ada Lovelace, Hopper, Blackwell, поддержка более плотных конфигураций и 32-битный HGEMM.
🟡Arxiv
🖥GitHub
@ai_machinelearning_big_data
#AI#ML#CUDA#DeepReinforce
🌟Фреймворк **CUDA-L1** сам научился оптимизировать код для GPU — и добился в среднем **3.12× ускорения работы модели**, а в пике — **до 120×**. .
Попросите любую LLM написать CUDA-код, и скорее всего, вы получите что-то, что либо не компилируется, либо работает мучительно медленно. Причина проста: качественного CUDA-кода в обучающих данных моделей почти не было.
Чтобы исправить это досадное упущение, Deep Reinforce AI создали систему CUDA-L1, которая основана на трехэтапном пайплайне: сначала supervised-обучение для освоения основ, затем self-supervised для практики и, наконец, контрастное обучение с подкреплением, чтобы было все максимально быстро.
🟢На первом этапе система училась писать корректный и компилируемый CUDA-код.
Для этого существующий код был аугментирован - создавались его вариации, чтобы повысить насмотренность модели.
🟢На втором этапе модель генерировала собственный CUDA-код, тестировала его и училась на работающих примерах, отсеивая неудачные.
🟢Самое интересное - третий этап.
Обучаемой модели показывали несколько реализаций CUDA-ядер вместе с их показателями ускорения, например: «kernel_v1 дает ускорение 1.2x», «kernel_v2 — 2.8x», а «kernel_v3 — 1.5x». Затем задали 3 вопроса:
🟠Почему kernel_v2 настолько быстрее?
🟠Какая стратегия оптимизации сработает еще лучше?
🟠Напиши ядро, которое превзойдет их все.
Таким образом, модель не гадает вслепую, а учится на конкретных примерах, анализируя причины разницы в производительности.
🟡Отдельная история - как победили reward hacking.
После обучения выяснилось, что более 30% сгенерированных реализаций пытались сжульничать - создавали дополнительные CUDA-потоки, которые выполнялись асинхронно.
Поскольку бенчмарк KernelBench отслеживал время только на основном потоке, код выглядел быстрее, чем был на самом деле, показывая фиктивное ускорение в 18 раз.
Другие уловки состояли в манипуляции гиперпараметрами задачи (уменьшение batch_size или размерностей) и кеширование результатов вычислений.
🟡Пришлось строить многоуровневую защиту.
Во-первых, в качестве "адвоката дьявола" взяли adversarial-чекер на базе DeepSeek-R1, который анализировал код на предмет эксплойтов с точностью обнаружения более 60%.
Во-вторых, собрали базу данных из более чем 500 уникальных паттернов взлома, это повысило точность обнаружения на 25%.
И в-третьих, применили математическое сглаживание и нормализацию наград, где любое подозрительное ускорение (от 1.5x для простых операций) дополнительно проверялось.
🟡После всех фильтров и проверок прогон на бенчмарке KernelBench оказался весьма позитивными.
Система успешно сгенерировала рабочий код для 249 из 250 задач, причем в 240 случаях код оказался быстрее базовой реализации.
Среднее ускорение по всем задачам составило 3.12 раза, максимальное - аж 120 раз. Медианное ускорение (50-й перцентиль) составило 1.42x, а 75-й перцентиль — 2.25x.
Производительность по уровням сложности задач распределилась следующим образом: на простых операциях среднее ускорение составило 2.78x, на последовательностях операторов - 3.55x, а на сложных задачах вроде полных слоев трансформера - 2.96x.
🟡Самое важное - это переносимость оптимизаций.
Код, оптимизированный на NVIDIA A100, был протестирован на других GPU. Результаты показали, что найденные паттерны оптимизации фундаментальны и работают на разных архитектурах.
Среднее ускорение на H100 составило 2.39x (успешных ускорений 227 из 250), на L40 — 3.12x (228/248), а на потребительской RTX 3090 — 2.50x (213/242).
▶️ Пока веса и код не опубликованы, но в ожидании можно покрутить интерактивное демо и воспроизвести тесты из пейпера - в репозитории проекта есть фрагменты CUDA-кода с отдельными версиями для разных GPU.
📌Лицензирование: GPL-3.0 License.
🟡Страница проекта
🟡Arxiv
🟡Demo
🖥Github
@ai_machinelearning_big_data
#AI#ML#CUDA#DeepReinforce#ContrastiveRL
🚀 SakanaAI представил Robust Agentic CUDA Kernel Optimization
Это новый подход, где LLM помогает оптимизировать CUDA-ядра для PyTorch.
• Слияние операций ускоряет forward/backward-проходы, результаты выше стандартных Torch-базлайнов
• Полный пайплайн: PyTorch → генерация CUDA-кода → эволюционная оптимизация во время работы
• Проверка через LLM: модели автоматически отмечают неправильные ядра (дает +30% к производительности)
• robust-kbench — собственный бенчмарк, где измеряют не только скорость, но и корректность работы LLM
Авторы пишут о 2.5x ускорении над PyTorch eager и даже 6x в линейных операциях❗️
Но большинство примеров — это тесты на слияние операций с неотюненной базой, так что цифры спорные.
К тому же PyTorch 2.5 уже внедряет похожие оптимизации ), поэтому такие рекорды могут быстро обесцениться.
Это интересный подход к самообучающимся AI-компиляторам, но заявленные ускорения стоит проверять на праактике.
🟢Github: https://github.com/SakanaAI/robust-kbench
🟢Статья: https://arxiv.org/abs/2509.14279
@ai_machinelearning_big_data
#AI#CUDA#PyTorch#SakanaAI#LLM#Optimizatio
#c_lang#cuda#cuda_driver_api#cuda_kernels#cuda_opengl
You can use the CUDA Samples from NVIDIA to learn and test CUDA Toolkit 12.9 features by downloading them from GitHub or as a ZIP file. These samples show how to use CUDA for GPU programming, including utilities, concepts, libraries, and performance optimization. You build them with CMake on Linux, Windows, or Tegra devices, and can run tests automatically with a provided Python script. This helps you understand CUDA programming, debug GPU code, and optimize your applications for better performance on NVIDIA GPUs. It’s a practical way to develop and improve GPU-accelerated software efficiently.
https://github.com/NVIDIA/cuda-samples
#typescript#ai#cuda#mlx#qwen3_tts#qwen3_tts_ui#voice_ai#voice_clone#whisper
Voicebox is a free, open-source voice synthesis studio that lets you clone voices, generate speech in 23 languages, and apply audio effects—all running privately on your computer. You can create realistic voice clones from just seconds of audio, use five different text-to-speech engines for different needs, add effects like reverb and pitch shift, and build multi-voice projects with a timeline editor. The key benefit is complete privacy: your voice data and AI models never leave your machine, unlike cloud-based alternatives. It also includes an API for building voice-powered applications and works across Mac, Windows, and Linux with GPU acceleration support.
https://github.com/jamiepine/voicebox