Как стать автором
Обновить
-14
0
Моё имя — стёршийся иероглиф @beeruser

Пользователь

Краткий обзор TinyML

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

TinyML сам по себе означает внедрение ml в маломощные микроконтроллеры и встроенные системы. Это устройствам IoT выполнять задачи обработки данных и машинного обучения непосредственно на самом устройстве, минимизируя таким образом необходимость в постоянном подключении к интернету или внешним вычислительным ресурсам. Основная цель TinyML - сделать ии или простые модельки доступным для самых маленьких устройств

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 2

Как работает протокол X11 на самом нижнем уровне

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

X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.


Но мало кто знает как он работает на самом деле. Потому что с годами он оброс слоями и слоями библиотек, которые стремятся скрыть саму сущность протокола.


А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.


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


А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.


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


Как бы то ни было, если кому-то интересно как все работает на самом деле, пожалуйста под кат.

Читать дальше →
Всего голосов 201: ↑199 и ↓2 +197
Комментарии 181

Сколько строк на C нужно, чтобы выполнить a + b в Python?

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

В своей предыдущей статье я исследовал структуру PyObject и её роль в качестве заголовка для всех объектов среды исполнения CPython. Эта структура играет важнейшую роль в обеспечении наследования и полиморфизма в системе объектов CPython. Но это лишь вершина айсберга.

В этой статье мы опустимся на один уровень ниже и посмотрим, что же происходит внутри среды исполнения Python для выполнения простого действия a + b. Иными словами, мы узнаем о подробностях реализации типов, операторов и динамической диспетчеризации в CPython.

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

Читать далее
Всего голосов 58: ↑55 и ↓3 +52
Комментарии 64

Exploring VALID/READY protocol, pipelines and experimenting with flow control using an HDL training tool

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

Ссылка на русскую версию / link to Russian version

Understanding valid/ready protocol is extremely important for every microarchitect.

Valid/ready is one of the main protocols used to organise flow-control inside a logic block as well as on inter-block (SoC) level.

In the last lesson, we explored FIFO buffer using hdlgadgets - human-in-the-loop HDL training tool.

This time we will take two FIFO buffers (which form a pipeline with valid/ready handshakes) and will experiment with it by changing flow-control logic of the pipeline.

We will show that valid/ready is not only a mechanism for transferring data from one FIFO queue to another, but also a method for organizing various kinds of logical functionality between queues.

If you have not worked with valid/ready protocol before, you will be surprised how easy it is to achieve desired functionality of the design by simply writing couple of lines of Verilog code in the handshaking logic block between two FIFOs.

Read further and watch the video
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Как создать собственный шрифт

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

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

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

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 0

Графика древности: палитры, часть 1/2

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

Хотя пиксельная графика прошлых лет полна нюансов, несомненно, одной из её главнейших характеристик, наряду с разрешением, является палитра — ограниченный набор цветов, которым нарисовано пиксельное изображение. Уникальное сочетание цветов, доступное на отдельно взятом старом компьютере или игровой приставке, часто позволяет даже беглым взглядом отличить графику для одной платформы от другой. Техники работы с палитрами и подбор оттенков также являются визитной карточкой многих пиксельных художников прошлого и современности. Но палитра — это не просто случайный набор цветов. Это результат технических ограничений и инженерных решений, в результате которых родились необычные техники рисования, анимационные спецэффекты, и особая визуальная эстетика.
Читать дальше →
Всего голосов 128: ↑127 и ↓1 +126
Комментарии 38

Не спеши, Маша! Разбор примеров из книги Хэррис Д.М., Хэррис С.Л. Цифровая схемотехника и архитектура компьютера

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

И вот, скачав бесплатную версию книги, я в который раз убедился, что как оно было этак 40-50 лет тому назад, так оно фактически и осталось. Но больше убило другое. В научном плане стало даже хуже. Теорию, судя по содержанию книги, нынче пролетают "по диагонали", что влечет за собой элементарные ошибки, характерные больше для студентов техникума, чем "вышки", на которых, судя по рекламе, эта книга рассчитана.

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

Итак, начнем...

Читать далее
Всего голосов 48: ↑45 и ↓3 +42
Комментарии 106

Улучшаем пунктуатор на стенограммах

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

Привет, Хабр! Сегодня я расскажу о том, как натренировать качественный русскоязычный пунктуатор и капитализатор для стенограмм (то есть, модель, превращающую только что распознанный Speech-to-Text’ом “привет хабр” в литературный “Привет, Хабр!”). Задача эта давно известная и в последние годы кое-как решаемая с помощью нейросетей-трансформеров, например, BERT. Ключевое слово здесь – “кое-как”. Мы пробовали множество открытых доступных моделей (подробности ниже), но результат сильно не дотягивал до нужного нам уровня. Пришлось доделывать модель самим.

Некоторые энтузиасты LLM сразу спросят: а зачем отдельно тренировать пунктуатор в 2023-м, когда есть универсальный ChatGPT? Одна из проблем в том, что ChatGPT работает только на зарубежных серверах, и как они там собирают данные – никому не известно. И это не говоря ещё о риске перевирания текста и высокой стоимости.

Если к вам обращаются заказчики за автономной системой протоколирования митингов, то ни о каком ChatGPT не может идти и речи. Что касается других LLM (Llama 2, T5 и т.д.), то они постоянно страдают галлюцинациями, потребляют в разы больше памяти и работают в десятки, а то и сотни раз медленнее, чем стандартный пунктуатор на BERT. Подробнее об экспериментах с использованием генеративных LLM – в разделе ниже.

В отличие от генеративных сетей, архитектура BERT в принципе хорошо подходит для расстановки знаков и заглавных букв: гарантия от галлюцинаций и быстрая работа, даже на CPU. Однако результат очень сильно зависит от того, на каких данных их обучали. Например, как мы выяснили на собственном опыте, пунктуаторы, натренированные на типичных больших русскоязычных корпусах (новости, энциклопедии, литература, рандомный кроулинг) очень редко ставят точки. Причём, как показали дальнейшие эксперименты, та же по строению модель справлялась намного лучше, если учить её на правильно подобранном датасете.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 11

ESP32 снимает показания водяных счетчиков и сам передает их «куда надо»

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

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

Основное отличие моего решения, от тех что я видел, заключается в максимальной автономности и легкости контроля и управления. ESP32 самостоятельно общается с сайтом который принимает показания приборов учета посредством встроенного http клиента. Процесс контролируется и управляется встроенным в ESP32 telegram ботом.

Читать далее
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 85

Простое CPU ядро на ПЛИС

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

Простое, нестандартное процессорное ядро с открытым кодом, которое может быть использовано для создания микроконтроллера в базисе ПЛИС, в том числе ПЛИС - ОП.

Читать далее
Всего голосов 58: ↑58 и ↓0 +58
Комментарии 20

GEOMETRY OF SOUND

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

Surprisingly, there are strict mathematical methods that literally allow to hear visual geometric forms and, conversely, to see the beauty of musical harmonies...

[Read on Russian]

Read more...
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

LLaMA 2, RWKV, Santacoder и другие LLM на iOS

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

Однажды я решил изучить язык Swift и разработать свое первое приложение для iOS. Для этого я решил создать реальный проект, который заключался в оптимизации нашумевшего LLaMA.cpp под iOS. Я поставил перед собой задачу обеспечить запуск 3B и 7B моделей на iPhone 12 Pro с приемлемой скоростью. Под «приемлемой» скоростью я имею в виду такую, чтобы пользователь не успевал заскучать, читая предсказанный текст, пока генерируется новая часть. Что из этого получилось (и какие трудности были при реализации) читайте в статье.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 5

Получаем JTAG на iPhone 15

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

Месяц назад Apple выпустила iPhone 15 — свой первый смартфон с разъёмом USB-C. Предыдущие полтора года я занимался аппаратным хакингом iPhone, например, мы выпустили опенсорсный последовательный JTAG-адаптер для iPhone под названием Tamarin Cable. Компания Apple наконец-то перешла на USB-C, поэтому мне стало любопытно, можно ли сделать что-то подобное с iPhone 15. Я купил по предзаказу этот телефон, пару печатных плат и набор электронных компонентов.

Прежде всего нужно сказать, что это не уязвимость и не jailbreak, я просто исследую USB-C в iPhone 15 и развлекаюсь со взломом оборудования.
Читать дальше →
Всего голосов 83: ↑83 и ↓0 +83
Комментарии 1

Чат GPT-4V, который видит — что он умеет

Время на прочтение 4 мин
Количество просмотров 51K
Случилось вот что: вышел большой отчёт про возможности GPT-4V. Внезапно оказалось, что LLM могут обращаться с картинками так же, как с текстовыми промптами, и никакой особой разницы нет. Что та фигня, что эта фигня, главное — научиться распознавать, дальше те же логические связки. Это давно ожидалось, потому что люди в основном смотрят, и большая часть информации приходит через глаза. Но мало кто ждал, что это так круто получится вот уже сейчас и с LLM.

Отчёт вот. Теперь давайте смотреть, а не читать.


Хорошие мультимодальные способности, чётко считывает указатели, хорошее общее понимание ситуации

Если вы пьяны, он пересчитает пиво и сверит с чеком:



Собственно, важное:
  • Хорошо понимает что за сцена изображена и какие взаимосвязи между объектами на ней.
  • Читает текст, ориентируется на местности, опознаёт конкретных людей
  • Умеет в абстракции и обратно
  • Отлично ищет то, чего не должно быть (отклонения от базовой идеи) — дефекты на деталях, дефекты в людях (в особенности на рентгене) и так далее.
  • Плохо считает.

Давайте к деталям.
Читать дальше →
Всего голосов 80: ↑79 и ↓1 +78
Комментарии 63

Извлечение текста из файлов PDF при помощи Python

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

▍ Введение


В эпоху больших языковых моделей (Large Language Model, LLM) и постоянно расширяющейся сферы их применений непрерывно растёт и важность текстовых данных.

Существует множество типов документов, содержащих подобные виды неструктурированной информации, от веб-статей и постов в блогах до рукописных писем и стихов. Однако существенная часть этих данных хранится и передаётся в формате PDF. В частности, выяснилось, что за каждый год в Outlook открывают более двух миллиардов PDF, а в Google Drive и электронной почте ежедневно сохраняют 73 миллионов новых файлов PDF (2).

Поэтому разработка более систематического способа обработки этих документов и извлечения из них информации позволит нам автоматизировать процесс и лучше понять этот обширный объём текстовых данных. И в выполнении этой задачи, разумеется, нашим лучшим другом будет Python.
Читать дальше →
Всего голосов 55: ↑54 и ↓1 +53
Комментарии 10

Stable Diffusion: text-to-person

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

Многие из вас сталкивались со Stable Diffusion и знают, что с помощью этой нейросети можно генерировать разнообразные изображения. Однако не всем интересно создавать случайные картинки с кошкодевочками, пускай даже и красивыми, и всем прочим. Согласитесь, было бы гораздо интереснее, если бы можно было обучить нейросеть создавать изображения... нас самих? Или наших любимых актёров и музыкантов? Или наших почивших родственников? Конкретных людей, в общем, а не какие-то собирательные образы из того, что было заложено при обучении нейросети. И для достижения этой цели нам потребуется обучить некую модель. Этим мы и займёмся, пытаясь определить наиболее оптимальный воркфлоу и максимально его автоматизировать.

Читать далее
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 29

Как собрать бюджетный умный дом. Общие принципы проектирования на оборудовании Wiren Board

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

Сборник коротких рецептов по автоматизации инженерных систем дома, офиса и любого другого объекта на оборудовании Wiren Board.

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

Читать далее
Всего голосов 41: ↑41 и ↓0 +41
Комментарии 35

Ортографическая проекция в фотографии и прочие интересные фокусы с объективами

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

С тем как работает фотоаппарат мы знакомимся еще со школьной программы. Однако привычное нам из школьного курса сведение объектива к "тонкой линзе" на самом деле не отвечает на массу практических вопросов. Например как удается создавать объективы с ортографической проекцией применяемые в системах технического зрения?

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

Так как же работает объектив?
Всего голосов 162: ↑161 и ↓1 +160
Комментарии 38

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля

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

К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!
Читать дальше →
Всего голосов 250: ↑248 и ↓2 +246
Комментарии 137

Что LLM знают о лингвистике? Это зависит от того, какие вопросы им задают

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

Развитие больших языковых моделей (Large Language Model, LLM) привело к смене парадигмы в сфере обработки естественного языка (Natural Language Processing, NLP). LLM, обученные на огромных объёмах текста, взятого из интернета, могут осваивать выполнение новых задач, задействуя механизмы контекстного обучения. Это означает, что NLP‑специалисты, «натаскивая» такие модели на решение определённых задач, не занимаются обновлением их параметров. Вместо этого специалисты пишут для LLM промпты, демонстрирующие желаемое поведение моделей и содержащие инструкции или некоторое количество готовых примеров. Эти промпты передают моделям в виде входного контекста (потому это и называют «контекстным обучением»), а модели используют информацию из промптов для формирования ответов на похожие вопросы.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Информация

В рейтинге
4 309-й
Дата рождения
Зарегистрирован
Активность