Search
Write a publication
Pull to refresh
22
0.5
Даниил Солопов @dan_sw

Software Engineer, Bachelor of Computer Science

Send message

T-Pro 2.0 — открытая гибридно-ризонинговая русскоязычная LLM

Level of difficultyHard
Reading time9 min
Views4.5K

Всем привет! На связи Толя Потапов, MLE в Т-Банке. Мы продолжаем развивать собственную линейку моделей GEN-T и внутренние продукты на основе своих моделей: агенты в саппорте, внутренние копилоты для сотрудников и Вселенную ассистентов.

Мы уже делились большими языковыми моделями T-lite 0.1, T-lite 1.0 и T-pro 1.0. Модели завоевали популярность и скачиваются суммарно более 15к раз в месяц. 

Сегодня делимся новой моделью T-pro 2.0, обученной на основе модели Qwen3 32B, но с более плотной токенизацией на русском языке. Модель поддерживает гибридный ризонинг и позволяет сгенерировать рассуждение перед тем как отвечать. Это помогает в сложных задачах, где требуется несколько последовательных выводов, таких как математика. 

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

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

Читать далее

Разработка высоконагруженных API: проблемы, решения, практические рекомендации

Level of difficultyMedium
Reading time14 min
Views12K

Ваш проект взлетел. Первые пользователи превратились в тысячи. Тысячи стали десятками тысяч. Метрики в дашбордах рисуют красивую кривую, устремленную вверх. Но есть и другие кривые, которые ползут вверх с не меньшей скоростью. Время ответа сервера. Количество ошибок 502 и 504.

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

Читать далее

Галлюцинации и многообразия. Зачем искусственному интеллекту многомерные миры

Reading time11 min
Views1.3K

Сейчас на Хабре много пишут о галлюцинировании нейронных сетей и больших языковых моделей в частности. Хорошим введением в эту тему, написанным с философских позиций, мне представляется текст уважаемого Дэна Рычковского @DZRobo «Когда ИИ закрывает глаза: путешествие между воображением и галлюцинациями». Базовое техническое погружение в тему вы найдёте в статье уважаемой @toppal «Причины возникновения галлюцинаций LLM», это перевод академической статьи специалистов Харбинского технологического института, опубликованной в конце 2024 года. Действительно, в большинстве источников галлюцинации ИИ рассматривают либо в негативном ключе, либо как неизбежный побочный эффект, связанный с попытками «вшить» синтетический аналог воображения в вычислительную сеть.

Я же хочу остановиться на менее известном аспекте работы нейронок, в котором галлюцинации могут восприниматься как положительная и даже необходимая часть работы алгоритма. Речь пойдёт об искусственном повышении размерности данных, подаваемых на вход в нейросеть, и о том, к чему такая практика может приводить. Наиболее известное проявление такого эффекта известно в англоязычных источниках под названием «проклятие размерности» (curse of dimensionality).

Читать далее

Мониторинг CPU и RAM на панели задач C++

Level of difficultyEasy
Reading time4 min
Views4.4K

Приветствую читателя этой статьи. Я студент, учусь по направлению «Приборостроение», но большую часть времени занимаюсь программированием. Все таки это меня привлекает больше. Задумывался по поводу смены ОС на Arch Linux, но пока отложил эту затею в долгий ящик. Смотрел различные ролики на YouTube и заметил, что многие пользователи ставят себе Polybar, в котором можно легко настраивать информацию, выводимую на нечто похожее на Панель задач в Windows. Тогда я подумал «А почему бы не сделать такое в винде?!» и сразу начал гуглить что к чему. Попытался найти готовые аналоги, но ничего не впечатлило, поэтому решил написать свою программу на C++.

Читать далее

Пишем простой драйвер Linux для устройства, ничего не зная о драйверах и о USB

Level of difficultyEasy
Reading time12 min
Views13K

Пару месяцев назад я купил Nanoleaf Pegboard Desk Dock — последнее слово в технологиях USB-хабов с RGB-светодиодами и крючками для устройств. К сожалению, это чудо инженерной мысли поддерживает только гейминговые операционные системы — Windows и macOS, поэтому возникла необходимость в драйвере для Linux.

В своих постах я уже настраивал Windows VM с пробросом USB и пытался выполнить реверс-инжиниринг официальных драйверов. При этом я задумался, а нельзя ли написать производителю и попросить у него спецификации или документацию его протокола. К моему удивлению, техподдержка Nanoleaf ответила мне всего через четыре часа, предоставив полное описание протокола, используемого Desk Dock, а также полосами RGB-светодиодов. Документация по большей мере подтвердила то, что я обнаружил самостоятельно, но также я нашёл в ней пару других мелких подробностей (например, управление питанием и яркостью), которые были мне неизвестны.

Сегодня мы попробуем написать драйвер на основании протокола (который я изучил реверс-инжинирингом), параллельно сверяясь с официальной документацией. Однако здесь есть одна небольшая проблема: раньше я ни разу не писал драйверов для устройств под Linux, а с USB-устройствами взаимодействовал только как пользователь.

Читать далее

BirdCLEF+ 2025: обзор соревнования и ключевые решения топ-5 команд

Level of difficultyMedium
Reading time4 min
Views1K

BirdCLEF+ 2025 — очередная часть ежегодного соревнования от Cornell Lab of Ornithology по распознаванию звуков дикой природы. В этом году участникам предстало предсказывать целевое животное на коротких фрагментах записи, балансируя между качеством моделей и жёсткими ограничениями железа.

Разобраться в псевдолейблинге...

Знакомство с межпроцессным взаимодействием на Linux

Reading time11 min
Views224K
Межпроцессное взаимодействие (Inter-process communication (IPC)) — это набор методов для обмена данными между потоками процессов. Процессы могут быть запущены как на одном и том же компьютере, так и на разных, соединенных сетью. IPC бывают нескольких типов: «сигнал», «сокет», «семафор», «файл», «сообщение»…

В данной статье я хочу рассмотреть всего 3 типа IPC:
  1. именованный канал
  2. разделенная память
  3. семафор
Отступление: данная статья является учебной и расчитана на людей, только еще вступающих на путь системного программирования. Ее главный замысел — познакомиться с различными способами взаимодействия между процессами на POSIX-совместимой ОС.
Читать дальше →

Фундаментальные вопросы по ML/DL, часть 1: Вопрос → Краткий ответ → Разбор → Пример кода. Линейки. Байес. Регуляризация

Level of difficultyMedium
Reading time23 min
Views4.4K

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

Времени мало, объема много, цели амбициозные - нужно научиться легко и быстро объяснять, но так же не лишая полноты!

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

Будет здорово получить ваши задачи и разобрать в следующих выпусках!

Как только разберетесь приступайте к части 2!

Взглянуть на старое под новым углом →

Готовимся к собесу: positional encodings в 2025 году

Level of difficultyEasy
Reading time9 min
Views3.3K

Если вы до сих пор считаете, что positional encoding в трансформерах — это знаменитые sin/cos из статьи 2017 года, то боюсь, что собеседование для вас закончится автоматическим реджектом.

Позиционное кодирование заметно эволюционировало с момента появления оригинальной статьи о трансформерах. В современных LLM и моделях компьютерного зрения, таких как FLUX, уже давно не используется классическое sin/cos-кодирование.

Читать далее

Как работает база данных Firebird, часть 1

Level of difficultyHard
Reading time21 min
Views1.3K

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

Читать далее

Мультитенантность в Kubernetes: возможные подходы и инструменты

Reading time8 min
Views3K

Хабр, привет!

Меня зовут Алиса, и я руковожу командой разработки контейнерной платформы «Штурвал». В последнее время мы с командой много работали над реализацией мультитенантности и перепробовали множество разных вариантов. Ниже я расскажу, как тенанты помогают закрыть «боли» при работе с K8s на примере трех проблем и поделюсь полезными инструментами.

Эта статья будет интересна тем, кто:

👉 «с ноги» врывается в свой первый кубер;
👉 самостоятельно строит Kubernetes-платформу;
👉 управляет одним или множеством кластеров K8s.

P. S. 31 июля в Москве состоится первая независимая конфа Kubernetes Community Day. Два пространства с хардкорными докладами и воркшопами от крутых экспертов из VK, МКБ, Yandex Cloud, «Лаборатории Числитель», ecom.tеch, Cloud ru, Luntry, FUN&SUN, Lamoda Tech и др. Участие бесплатное. Регистрация тут.

Читать далее

Ходим в Интернет с отключённым IPv4

Level of difficultyMedium
Reading time14 min
Views76K

Несколько дней назад в маршрутизаторе моего провайдера после отключения электричества поломался IPv4. К счастью, подключение по IPv6 продолжало работать, но доступна была только малая часть веб-сайтов.

В этом посте я расскажу, как на помощь мне пришли Linux, WireGuard и Hetzner, благодаря которым я смог получить доступ ко всему Интернету через одно лишь соединение IPv6.

Читать далее

Я построил Vision Transformer с нуля — и научил его обращать внимание

Level of difficultyEasy
Reading time6 min
Views5.6K

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

Читать далее

Telegram-бот, который умеет слушать: разработка на grammY

Level of difficultyEasy
Reading time12 min
Views5.3K

Представьте: собеседник отправляет голосовое сообщение на пять минут, а вы не можете отвлечься и прослушать все от начала до конца? Что делать? Максим, ведущий канала RED Group, подошел к вопросу творчески и показал, как на базе grammY и SpeechService в NestJS разработать бота, который будет слушать и структурировать по таймкодам голосовые сообщения.

Инструкция будет полезна новичкам, которые только погружаются в работу с Telegram Bot API с помощью JavaScript. Кроме того, в конце материала мы разберем, как задеплоить готового бота на сервер, чтобы он работал вне зависимости от локальной машины. Подробности под катом!
Читать дальше →

Как работает Node.js

Level of difficultyMedium
Reading time22 min
Views15K



После прочтения этой статьи вы хорошо поймете следующее:


  • как работает цикл событий (event loop) в Node.js, включая все его фазы
  • как Node.js выполняет JavaScript в одном потоке (single thread)
  • как Node.js использует библиотеку libuv и внутренние API для обработки асинхронных операций
  • почему знание работы цикла событий так важно для написания эффективного серверного кода

Понять, как JS работает "под капотом" в браузере (см. эту короткую 15-минутную статью), проще, чем понять устройство Node.js. В браузере нет сложных фаз и многослойных механизмов, как в Node.js.


Но почему в Node.js все устроено сложнее? Зачем столько фаз, которые так непросто понять?

Читать дальше →

Концепция умного указателя static_ptr<T> в C++

Reading time11 min
Views17K

В C++ есть несколько "умных указателей" - std::unique_ptr, std::shared_ptr, std::weak_ptr. Также есть более нестандартные умные указатели, например в boost: intrusive_ptr, local_shared_ptr.

В этой статье мы рассмотрим новый вид умного указателя, который можно назвать static_ptr. Больше всего он похож на std::unique_ptr без динамической аллокации памяти.

Читать далее

На START, внимание, марш: как победить галлюцинации и научить LLM точным вычислениям

Level of difficultyEasy
Reading time4 min
Views2K

START — опенсорсная LLM для точных вычислений и проверки кода. В START решены две главные проблемы большинства обычных моделей: галлюцинации и ошибки в многоэтапных расчетах. В статье разберемся, зачем и как именно эти проблемы решены.

Читать далее

Hello self driving world! (Carla Simulator) — часть 2

Level of difficultyMedium
Reading time8 min
Views935

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

Во второй части мы займемся улучшением плавности хода при помощи PID-контроллера, освоим алгоритм Stanley для точного управления рулём и научим машину реагировать на внезапные препятствия. Готовы погрузиться глубже и сделать ваш виртуальный беспилотный автомобиль ещё умнее и безопаснее? Тогда пристёгивайтесь и поехали!

Читать далее

Регулярные выражения простыми словами. Часть 3

Level of difficultyEasy
Reading time11 min
Views9.4K

Разработчики делятся на три типа: тех, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой; тех, кто все еще боится их и всячески избегает; и тех, кто уже прочитал первую и вторую части этой серии статей и полон оптимизма разобраться с этими магическими письменами. Эта статья специально для третьих, чтобы обратно их напугать, ведь в этой части мы рассмотрим одну из самых сложных, но в буквальном смысле захватывающих тем.
Читать дальше →

Как я убедил виртуальную машину, что у неё есть кулер

Level of difficultyEasy
Reading time6 min
Views19K

Зачем вообще этим заморачиваться?

Некоторые образцы malware выполняют различные проверки, чтобы определить, запущены ли они в виртуальной машине. Один из самых частых способов — проверка наличия определённых аппаратных компонентов, обычно не эмулируемых в виртуальных средах. Один из таких компонентов — кулер процессора. Например, malware может проверять наличие кулера процессора, поискав в WMI класс Win32_Fan:

wmic path Win32_Fan get *

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

Зловредное ПО может определять, запущено ли оно в виртуальной машине, множеством разных способов. Есть различные классы WMI, позволяющие обнаружит присутствие виртуальной машины, например, Win32_CacheMemory, Win32_VoltageProbe и множество других.

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

Читать далее
1
23 ...

Information

Rating
3,373-rd
Location
Иркутск, Иркутская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Engineer, ML Engineer
Middle
C++
Python
TENSORFLOW
Pytorch
Cmake
Linux
Deep Learning
Cuda
Computer Science
Keras