Как стать автором
Обновить
-8
Some Name @sswwsswwread⁠-⁠only

Middle Python Backend Developer

Отправить сообщение

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.9K

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

Читать далее

Pytest-xdist: как распараллелить тесты без конфликтов в базе

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров2.5K

Привет! Я Андрей Сташок, бэкенд-разработчик в KTS. В этой статье я расскажу о запуске параллельных тестов через pytest-xdist.

Почему это важно?

Объясню на нашем примере. При разработке продуктов мы постоянно выполняем юнит-тестирование. Раньше мы проверяли все последовательно, и с расширением тестовой базы время проведения испытаний заметно возрастало. Распараллеливание через pytest-xdist помогло нам сильно ускориться, и сегодня я хочу поделиться этим трюком с вами.

Я расскажу, как запускать параллельные тесты для реляционной БД PostgreSQL (с драйверами asyncpg и psycopg2) и key-value БД Redis. Для подключения к реляционной БД мы будем использовать SQLAlchemy, а для Redis — библиотеку redis. Кроме того, я рассмотрю, как автоматизировать выполнение миграций при каждом запуске тестов с использованием alembic.

Читать далее

Первый год free-threaded Python

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.3K

На прошлой неделе разработчики CPython выпустили CPython 3.14.0b1. А на этой неделе в Питтсбурге, штат Пенсильвания, начинается конференция PyCon 2025. Оба эти события знаменуют собой важную веху в делах, связанных с разработкой, выпуском и доведением до стабильного состояния релизов free-threaded Python (Python с поддержкой свободной многопоточности — с отключённым механизмом GIL).

Перед вами рассказ о первом годе развития этого проекта, и о той роли, которую мы, сотрудники Quansight, в нём сыграли. А именно, речь идёт о том, что мы обеспечили возможность экспериментального использования сборок Python с поддержкой свободной многопоточности. Применялись они в реальных продакшн-системах, поддерживая процессы, которые основаны на сложных наборах зависимостей.

Читать далее

Тестовые идентификаторы: как и где расставлять правильно

Время на прочтение20 мин
Количество просмотров5.9K

По фактам: почему CSS и XPath — путь в ад, а test-id — спасение. В статье — реальные советы, как договориться с командой, внедрить test-id и писать автотесты, которые не разваливаются каждую пятницу.

Читать далее

Поднимайте If вверх, опускайте For вниз

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров32K

Эта статья — краткая заметка о двух связанных друг с другом эмпирических правилах.

Поднимайте If вверх

Если внутри функции есть условие if, то подумайте, нельзя ли его переместить в вызывающую сторону:

// ХОРОШО

fn frobnicate(walrus: Walrus) {

... }

// ПЛОХО

fn frobnicate(walrus: Option<Walrus>) {

let walrus = match walrus {

Some(it) => it,

None => return,

};

...

}

В подобных примерах часто существуют предварительные условия: функция может проверять предусловие внутри и «ничего не делать», если оно не выполняется, или же может передать задачу проверки предварительного условия вызывающей её стороне, а при помощи типов (или assert) принудительно удовлетворить этому условию. Подъём проверок вверх, особенно в случае предварительных условий, может иметь лавинообразный эффект и привести к уменьшению общего количества проверок. Именно поэтому и возникло это правило.

Читать далее

Знакомьтесь, FRIDA. Открытая эмбеддинг-модель для русского языка

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров12K

В этой статье мы расскажем о нашей новой модели FRIDA, которая сейчас (20.05.2025) занимает первое место в русскоязычном бенчмарке MTEB (ссылка на таблицу лидеров).

Ранее мы уже рассказывали на Хабре о создании русскоязычных задач для MTEB. Напомним, что этот бенчмарк предназначен для оценки моделей, способных создавать эмбеддинги текста — векторные представления, применяемые в различных задачах NLP.

Читать далее

Как я научился анализировать собственные собесы с помощью Whisper (и почему это нужно каждому айтишнику и не только)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров17K

Собеседования - всегда стресс. Я замечал, что после каждого интервью трудно вспомнить детали: какие вопросы задавали, как именно я отвечал, где были ошибки или неточности. А переслушивать запись, которая может длиться от часа и выше это долго и неэффективно.

Задумался: а что если использовать что-то, что автоматически превратит аудиозапись интервью в текст? Так я открыл для себя Whisper от OpenAI. Под катом подробности о его применении.

Читать далее

Издержки микросервисов, которые ваш стартап может не потянуть

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров13K

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

Личный VPN сервер: настрой VLESS за два клика — autoXRAY

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров31K

Сейчас в сети много инструкций по установке GUI-панелей, таких как Marzban, 3x-ui или новая RemnaWave. Однако, все они избыточны для домашнего использования, так как предназначены для крупных проектов и отличаются высокой сложностью настройки.

Мануал, который необходимо пройти до получения первого рабочего конфига, занимает более 10 страниц. Кроме того, подходящий конфиг для Xray нужно ещё поискать и правильно настроить — с этим отлично справляется Bash-скрипт autoXRAY.

Без GUI и базы данных Xray потребляет меньше ресурсов сервера и отлично подходит для запуска на слабых VPS-конфигурациях!

При каждом запуске autoXRAY генерирует новые UUID, ключи и пароли для защиты пользователей, а также выбирает случайные SNI из списка для маскировки.

Читать далее

Model Context Protocol (MCP): как подружить нейросети со всеми API за пару кликов

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров12K

Казалось бы, совсем недавно мир только начал знакомиться с тем, что такое большие языковые модели (LLM). Вскоре после этого появились их многочисленные вариации — на любой вкус и цвет, от узкоспециализированных до универсальных моделей. Затем началась волна интеграций: LLM начали встраивать в различные сервисы, приложения и API, упрощая и автоматизируя рутинные процессы.

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

И вот, компания Anthropic представила решение этой задачи — новый протокол Model Context Protocol (MCP), который стандартизирует взаимодействие агентов с различными сервисами и между собой.

Давайте разберёмся, что такое MCP, и с чем его едят!

Читать далее

Как декомпозиция повышает точность распознавания текста: опыт с фотографиями СТС

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров14K

Привет! Меня зовут Наталия Вареник, я DS-инженер в Авито, занимаюсь моделями распознавания изображений. Расскажу про один из наших проектов — пайплайн для распознавания номеров с фотографии свидетельства транспортного средства (СТС). В статье описала особенности задачи и рассказала, как мы решали её с помощью декомпозиции. 

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

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

Читать далее

System Design — ТОП 5 ошибок новичка на интервью

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров15K

Почему так сложно пройти первые System Design Интервью? Какие есть подводные камни? Оказывается, что не все понимают базовый алгоритм прохождения, а также нюансы движения по основным этапам.

Меня зовут Владимир и я senior backend в геораспределенной HighLoad системе. Которая выдерживает пиковые нагрузки в млн RPS. Моя страсть System Design. Я успешно прохожу интервью в BigTech компании, а также готовлю учеников. Выделил ТОП-5 ошибок у новичков и готов поделиться их разбором. Подробности под катом.

Узнать ошибки

INTELLECT-2: Первая большая (32B) параметрическая модель с распределенным обучением

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.7K

Обычно нейросети нужно тренировать на мощном железе, сконцентрированном в одном датацентре. Результат такой тренировки попадает в руки той бигтех-корпорации, которой по карману иметь свои датацентры и самостоятельно тренировать модели за бешеные миллионы баксов. Есть ли другой путь?

Встречайте INTELLECT-2 — первую параметрическую модель размером 32B, обученную с помощью асинхронного обучения с подкреплением (RL) на динамическом, однородном рое вычислительных узлов. Доступ к узлам изолирован и не требует дополнительных привилегий — теоретически, это могут быть какие-то компьютеры волонтёров в интернете.

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

И что получилось?

FastAPI + Keycloak: Простая и безопасная авторизация в веб-приложении на примере реального проекта

Время на прочтение34 мин
Количество просмотров14K

Keycloak - это мощная open-source платформа для аутентификации и авторизации, которую используют даже банки и крупные корпоративные клиенты для защиты своих приложений и данных.

В статье на реальном примере (FastAPI + Python) простым языком объясню, как Keycloak помогает упростить управление доступом и почему его принципы универсальны для любого бэкенда, независимо от выбранного языка программирования

Читать далее

Распределённый инференс и шардирование LLM. Часть 1: настройка GPU, проброс в Proxmox и настройка Kubernetes

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров9K

Когда модель DeepSeek R1 стала широко обсуждаться в сообществе, я заинтересовался, можно ли эффективно использовать её и другие крупные модели в домашних условиях, не прибегая к дорогостоящим облачным сервисам. Поскольку DevOps и инфраструктурой я увлекаюсь уже несколько лет, у меня постепенно сформировалась домашняя лаборатория, на которой я и решил проверить эту идею. 

Эта статья в трёх частях — результат моего опыта в решении этой задачи. Внутри вас ждёт пошаговое руководство по реализации бюджетного распределённого инференса с использованием Ray Serve, vLLM, Kubernetes, Proxmox и других технологий. В первой части мы разберём настройку GPU и его проброс в Proxmox, развернём Kubernetes-кластер, установим GPU Operator и KubeRay Operator.

Поехали!

Для архитекторов и аналитиков: шаблон описания архитектуры приложения (34 страницы пользы)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров29K

Архитектура программного обеспечения — основа, от которой зависят качество, производительность и масштабируемость систем. В статье шаблон от экспертов в области архитектуры программного обеспечения с типовыми описаниями и примерами архитектурных представлений. Шаблон доступен для скачивания.

Читать далее

Чистый код — красивая архитектура. А работает ли это?

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров19K

Вы пишете код не для компилятора — он съест любую абракадабру, если синтаксис верен. Вы пишете для людей, для того парня из соседнего отдела, который будет разбирать ваш код через полгода. Для себя, когда забудете, о чём думали в момент написания. Для тимлида, у которого нет времени расшифровывать ваши «фичи», замаскированные под техдолг. 

Грязный код — это про непонятные переменные, запутанные модули и решения «на скорую руку». Вас ждёт после такого потеря во времени и в лучшем случае косые взгляды коллег. К сожалению, непонятный код часто пишут не только из-за спешки, но и из-за неопытности и чрезмерного энтузиазма тех, кто хочет всё переделать.

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

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

Давайте разберём, как превратить кошмар в конфетку — детали внутри.
Читать дальше →

Распределённые транзакции в микросервисах: от SAGA до Two‑Phase Commit

Время на прочтение29 мин
Количество просмотров13K

Переход от монолита к микросервисной архитектуре приносит гибкость и масштабируемость, но и создает новые сложности. Одна из ключевых проблем –согласованность данных и транзакции. В монолите обычно можно обернуть несколько операций одной ACID-транзакцией: либо все операции выполняются успешно, либо при ошибке происходит полный откат. В мире микросервисов такой прямолинейный подход не работает. Каждый сервис автономен, у каждого своя база данных, и общаются они через сеть. Как результат, гарантировать атомарность и целостность процессов, охватывающих несколько сервисов, непросто. Возникает риск частичных обновлений: одна часть системы изменилась, а другая – нет, что приводит к неконсистентным (несогласованным) состояниям данных.

Чтобы решить эту проблему, разработаны специальные паттерны и протоколы управления распределёнными транзакциями. В этой статье детально рассмотрим ограничения классических ACID-транзакций в распределённой архитектуре, а также два подхода к распределённым транзакциям – сага (SAGA) и двухфазный коммит (2PC). Разберём мотивацию, принципы работы, преимущества и недостатки каждого, сравним их по критериям. Кроме того, обсудим альтернативные подходы, такие как TCC (Try-Confirm-Cancel), паттерн Outbox, а также кратко упомянем eventual consistency, транзакционные сообщения, инструменты вроде Atomikos и др. В завершение – практические рекомендации, как выбрать подходящий способ обеспечения согласованности в ваших микросервисах.

Читать далее

OLMo: (Миниатюрная) Открытая Языковая Модель

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.6K

OLMo — моделька от AI2, разработанная учёными для учёных. Если вы занимаетесь экспериментами над нейронками, это идеальный вариант: весь код и данные, необходимые для тренировки, открыто лежат на GitHub. Более того, выложены даже промежуточные чекпоинты, с очень высокой гранулярностью. Это отличает ее от якобы "открытых" нейронок, которые обычно приходят к тебе монолитным финальным бинарём.

Эта статья — короткий гайд, адаптированный с GitHub создателей нейросети и проверенный на практике.

Интересно. Читать далее

Строгая десериализация YAML в Python c библиотекой marshmallow

Время на прочтение5 мин
Количество просмотров7.7K

Исходная задача


  • Необходимо прочитать нетривиальный конфиг из .yaml файла.
  • Структура конфига описана с помощью дата-классов.
  • Необходимо, чтобы при десериализации были выполнены проверки типов, и, если данные невалидны, было брошено исключение.

То есть, проще говоря, нужна функция вида:


def strict_load_yaml(yaml: str, loaded_type: Type[Any]):
    """
    Here is some magic
    """
    pass

И эта функция будет использоваться следующим образом:

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

Информация

В рейтинге
Не участвует
Откуда
Cascade Station, None, Австралия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Средний
От 250 000 ₽
Python
PostgreSQL
FastAPI
Google Cloud Platform
Kubernetes
CI/CD
Docker