Search
Write a publication
Pull to refresh
3
0
Send message

Как оживить Кандинский матрицами вращений для генерации видео (часть 1-я)

Level of difficultyMedium
Reading time6 min
Views2.8K

В статье коснемся темы матриц вращений и особенно их версии для многомерных пространств. Матрицы вращений широко используются в задачах 3D моделирования, для контролируемого поворота объекта. Но как оказалось, можно посмотреть на них шире и применить к многомерному латентному пространству диффузионных моделей. И первые опыты показали применимость матриц вращений при решении задачи генерации видео из текста. Статья (1-я часть) основана на моей магистерской работе в МФТИ, которую защитил в июне 2024г.
Продолжение во 2й части.

Читать далее

Забытые технологии древних — картинка в картинке на ТВ для умного дома

Level of difficultyMedium
Reading time8 min
Views9.9K

Привет, Хабр! Сегодня я расскажу о своем опыте автоматизации умного дома, а именно о выводе изображения с камеры на тв.

Читать далее

Как я обучил модель, которая понимает русский лучше GPT 3.5 Turbo

Reading time3 min
Views10K

В этой статье я расскажу, как я смог обучить модель, которая превзошла GPT 3.5 Turbo на русскоязычной части MT-Bench. Также я рассмотрю новую конфигурацию для обучения на двух графических процессорах параллельно с помощью accelerate и deepspeed.

Особенный интерес представляет мой датасет для обучения. Он получен из сабсета мультиязычных промтов набора lightblue/tagengo-gpt4 на русском, английском и китайском, всего 10 тысяч примеров, сгенерированных с помощью GPT-4o. Это в 8 раз меньше, чем исходный набор Tagengo, но обученная на последнем Suzume, как показали бенчмарки, лишь очень незначительно превосходит мою модель на ru_mt_bench, а на англоязычном бенче и вовсе уступает ей. Это значит, что я в разы сэкономил на GPU за счет более высокого качества данных, полученных с помощью GPT-4o. 

Я использовал скрипт для получения ответов по заданным промптам. Для генерации русскоязычной выборки я изменил часть скрипта, чтобы выбрать все промпты на русском из Tagengo (8K примеров), так как основной фокус при обучении модели был на русском языке. 

В итоге я получил датасет ruslandev/tagengo-rus-gpt-4o и приступил к обучению.

Для этого я создал виртуальную машину с NVIDIA H100, используя сервис immers.cloud. Для достижения наилучших результатов по instruction-following (что проверяется на MT-Bench) я взял в качестве исходной модели meta-llama/Meta-Llama-3-8B-Instruct. Именно на ней обучена модель Suzume, у которой высокая оценка на MT Bench. Предыдущие эксперименты показали, что базовая Llama-3 8B,  а особенно ее четырехбитная версия для QLoRA  unsloth/llama-3-8b-bnb-4bit - значительно отстает по оценкам бенчмарка.

Читать далее

Фокусы с опторазвязкой

Level of difficultyMedium
Reading time9 min
Views32K

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

Читать далее

Компилятор за выходные: наконец-то ассемблер

Level of difficultyMedium
Reading time8 min
Views9K

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

Ну а когда оно заработает, предлагаю решить задачу: как сэмулировать побитовые операции and-not-xor-or при помощи четырёх арифметических.

Читать далее

Готовим k8s кластер на OrangePi 3 LTS

Level of difficultyMedium
Reading time11 min
Views8.7K

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

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

Идеальным и бюджетным решением являются микрокомпьютеры на базе архитектуры ARM, например Orange Pi 3 LTS. Я слышал о российских аналогах, таких как Repka Pi, но пока не имел опыта работы с ними, а Raspberry Pi, хоть и обладает множеством модулей, но является дороговатым вариантом. Orange Pi 3 LTS компактный, достаточно мощный и поставляется с образом OC Debian 11. Это устройство оснащено 4 ядрами, 2 ГБ оперативной памяти и процессором с тактовой частотой 1,8 ГГц. Стоимость этого устройства, на момент написания статьи, весьма демократичная - около 4000 ₽.

Читать далее

Windows 11 24H2 IoT Enterprise LTSC – что за зверь, и чем он хорош?

Level of difficultyEasy
Reading time4 min
Views148K

Месяц назад я писал статью об издании Enterprise G, созданную Microsoft для китайского правительства, в котором много лишнего отключено. Статья вызвала большой интерес, много кому нужна ОС с максимальным функционалом — при вашем желании его использовать, но с возможностью отключить всё (или почти всё) ненужное. У версии Enterprise G основной недостаток в том, что политика продукта, прописанная в цифровой лицензии, запрещает установку любых языковых пакетов, отличных от китайского и английского. То бишь, русского интерфейса легким путем не достичь. Возникает вопрос выбора другого издания.

Сразу на ум приходит версия Enterprise LTSC, как полнофункциональная с длительным циклом обслуживания и поддержки, благо для Windows 11 24H2 она утекла еще в апреле. Но, оказывается, есть и более достойный выбор, о котором мы сейчас с вами и поговорим. Речь идёт об издании IoT Enterprise LTSC. Что это такое? Чем оно лучше, чем Enterprise LTSC? А чем хуже? Как её русифицировать и как активировать? Об это сегодняшний разговор.

Чем же так отличается IoT Enterprise LTSC?

Расшифровка startup файла Arm Cortex-M

Level of difficultyHard
Reading time7 min
Views5.3K

В статье предпринята попытка разобраться в содержимое startup файла микроконтроллера STM32F4, построенного на базе ядра Arm Cortex M4. Для запуска ядра используется ассемблерный код, который и предстоит изучить. Для лучшего понимания материала необходимо иметь представление об архитектуре ядра Cortex M4. Сразу отмечу, что замечания и уточнения приветствуются, т. к. они позволят дополнить представленную информацию.

Читать далее

Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api

Level of difficultyMedium
Reading time14 min
Views9.1K

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

Будем пытаться писать быстрый драйвер флешки и при этом попробуем сэкономить её ресурс при перезаписях.

Читать далее

Сборка firmware для CC2652 из Makefile

Level of difficultyHard
Reading time37 min
Views5.9K

В этом тексте представлена инструкция настройки ToolChain(а) для работы с микроконтроллером CC26x2 при помощи языка программирования С и компилятора GCC. Сборка осуществляется прямо из Makefile(ов).

Тут же представлена инструкция для настройки пошаговой отладки в консоли Windows.

В принципе, если вы собираете из Makefile, то вам всё равно какой там микроконтроллер и какого он вендора. Для добавления поддержки очередного MCU достаточно написать всего один *.ld и один *.mk файлик.

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

Читать далее

Пишем прошивку под TI cc2530 на Z-Stack 3.0 для Zigbee реле Sonoff BASICZBR3 с датчиком ds18b20

Reading time22 min
Views62K


Предполагается, что читатель уже имеет начальные знания языка C, что-то знает о Zigbee, чипе cc2530, методах его прошивания и использования, а также знаком с такими проектами, как zigbee2mqtt. Если нет — подготовьтесь или сходите почитать на https://myzigbee.ru и https://www.zigbee2mqtt.io/
Статья написана сперва подробно, но постепенно ускоряется и уже не останавливается на деталях, а описывает готовый код прошивки. Если кому-то не интересны рассуждения, то просто открывайте исходники прошивки и читайте их.

Исходный код готовой прошивки

Код и подход к разработке не претендует на идеальность. “Я не волшебник, я только учусь.”

Цель


Основная цель — разобраться, как писать прошивки под Z-Stack, давно хотел. Поэтому решил реализовать альтернативную прошивку под готовое оборудование (в качестве примера выбрано реле Sonoff BASICZBR3) и добавить возможность подключения популярного датчика температуры ds18b20.

Дополнительно хотел показать начинающим Zigbee-разработчикам пример разработки прошивки под чип TI cc2530 на Z-Stack.
Читать дальше →

SCARA-Laser. Часть 2. Переизобретаем велосипед

Level of difficultyMedium
Reading time8 min
Views2.7K

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

https://howtomechatronics.com/projects/laser-engraving-with-diy-arduino-scara-robot-complete-guide/ - лазерный гравер на SCARA-кинематике с контроллером Arduino Mega. Ровно то, что я хотел. Но этой статьи бы не было, если бы я просто скачал модельки, распечатал и собрал по инструкции.

Читать далее

Мой маленький Kubernetes: настраиваем тестовый кластер в VirtualBox

Reading time13 min
Views42K

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

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

Обычно изучение Kubernetes стоит начинать с minikube - консольной утилиты, которая умеет быстро создавать кластер из одного узла с использованием VirtualBox. Это самый лучший вариант для быстрого старта.

Но есть и другой вариант. Можно взять VirtualBox, создать несколько виртуальных машин, например, с Ubuntu Server и настроить небольшой кластер Kubernetes прямо на своём домашнем компьютере.

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

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

Осторожно, трафик! В статье очень много скриншотов.

Читать далее

Погружение в DevOps: запускаем GitLab и GitLab Runners локально

Level of difficultyMedium
Reading time3 min
Views16K

В этой статье мы рассмотрим, как развернуть собственный GitLab сервер и GitLab Runners с использованием Docker Compose. Это руководство поможет вам создать локальную среду для изучения и практики GitLab CI/CD. Мы пройдем через все этапы: от настройки контейнеров до регистрации раннеров и создания примера CI/CD пайплайна. Независимо от того, новичок вы в CI/CD или опытный разработчик, этот гайд предоставит вам ценные знания для улучшения вашего процесса разработки.

Читать далее

Почему нельзя парсить вывод ls(1)

Level of difficultyEasy
Reading time8 min
Views13K

Команда ls(1) достаточно хорошо справляется с отображением атрибутов одного файла (по крайней мере, в некоторых случаях), но когда просишь у неё список файлов, возникает огромная проблема: Unix позволяет использовать в имени файла почти любой символ, в том числе пробелы, переносы строк, точки, символы вертикальной черты, да и практически всё остальное, что вы можете использовать как разделитель, за исключением NUL. Существуют предложения по «исправлению» этой ситуации внутри POSIX, но они не помогут в решении текущей ситуации (см. также, как правильно работать с именами файлов). Если в качестве стандартного вывода не используется терминал, в режиме по умолчанию ls разделяет имена файлов переносами строк. И никаких проблем не возникает, пока не встретится файл, в имени которого есть перенос строки. Так как очень немногие реализации ls позволяют завершать имена файлов символаи NUL, а не переносами строк, это не позволяет получить безопасным образом список имён файлов при помощи ls (по крайней мере, портируемым способом).

Читать далее

Моя первая встраиваемая система под управлением Linux

Level of difficultyMedium
Reading time14 min
Views19K

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

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

Мои проекты за 7 лет увлечения DIY

Level of difficultyEasy
Reading time5 min
Views43K

Привет, Хабр! Решил представить здесь самые интересные проекты/самоделки/концепции, которые делал сам на протяжении последних семи лет. Если КДПВ сделала своё дело, добро пожаловать под кат! Осторожно, много фото.

Вдохновиться разными идеями

Скотч, кабель, Интернет: умный съемный дом

Level of difficultyEasy
Reading time9 min
Views20K

Я люблю автоматизацию, гаджеты и IoT

Поэтому, места где я живу, рано или поздно становятся автоматизированными и обвешанными интернетом вещей

Да чего там, у меня даже бойлер по расписанию работает!

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

Автоматизируй это

Путь в IT, воспоминания бумера. Часть 2, институт, PDP-11 (СМ ЭВМ)

Reading time4 min
Views10K

Первая часть тут

Мое программирование продолжилось в сентябре, после поступления в институт (ЛЭТИ). Программировал я вечерами, в совхозе под Любанью (Ленинградская область), после уборки морковки на полях, потому что учеба в ЛЭТИ началась именно с помощи совхозу, причем на это ушел весь сентябрь. На чем же я программировал, спросите вы? Я программировал ручкой в тетрадке, на языке PASCAL. Других студентов это удивляло, но я не был полным ботаником - теперь я понимаю, что в моем поведении был протест и элементы троллинга окружающих.

Писал же я интерпретатор для языка ИИ PLANNER. Этот LISP-подобный язык обладал куда большей простотой и выразительностью, чем LISP, и имел back-tracking. Вскоре после возвращения в город я стал получать машинное время на одной кафедре, где стояли СМ ЭВМ - аналог PDP-11. Выглядели они примерно так:

Читать далее

Настройка связки VScode, OpenOCD, WCH-LinkE, Cortex-M

Level of difficultyMedium
Reading time6 min
Views7.9K

Wch-link является программатором для ARM, RISC-V микроконтроллеров. По возможностям это аналог St-link, JLink и прочих. По сравнению с st-link он поддерживает контроллеры не только фирмы STM. А по сравнению с JLink стоит намного дешевле и не имеет проблем с лицензиями, которые могут встречаться у дешевых клонов JLink. Также плюсом идет поддержка набирающих популярность контроллеров от китайской компании WCH.

Есть несколько вариантов этого отладчика, я буду говорить о версии Wch-linkE rev 1.3.

Читать далее

Information

Rating
Does not participate
Registered
Activity