Arnold Enginegger
714 subscribers
38 photos
4 videos
12 files
83 links
Тоже хочу в блогеры
Download Telegram
Тут в соседнем чатике переслали пост какого-то чела, который сделал сокрытие сообщений в тексте посредством омоглифов - символов из разных языков с одинаковым написанием (типа "о" кириллицей и "o" латиницей). При этом он зачем-то использовал нейросети.

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

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

Метод из статьи довольно замороченный, по этому я сделал свои, максимально простые правила кодирования. Вот промпт:

Преобразуй число в нейтральный бытовой текст по следующим правилам.

Одна цифра кодируется одним предложением.
Используй таблицу:
0 = погода
1 = еда
2 = дорога / транспорт
3 = работа / дело
4 = встреча / разговор
5 = дом / быт
6 = покупка
7 = воспоминание
8 = план / намерение
9 = ожидание

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


А вот сообщение, в котором зашифрован мой номер телефона:

Наконец появилось время спокойно написать. Решил на следующей неделе немного перестроить привычный ритм и раньше браться за важные дела. В кафе было много народа, по этому пришлось долго ждать свой заказ. По пути домой зашел в магазин и выбрал себе удобную мелочь, которая давно была нужна. Дома навел порядок на столе и наконец разобрался с вещами, которые давно лежали без места. На обед сделал себе кое что простое и горячее, и этого оказалось вполне достаточно. Неожиданно вспомнил один спокойный вечер из прошлого, и настроение сразу улучшилось. Чуть позже встретился со знакомым и мы хорошо поболтали обо всем понемногу. К вечеру поднялся ветер, и на улице сразу стало заметно прохладнее. Ночью воздух был сырым и свежим, будто дождь был совсем рядом. Ах да, вечером купил в соседнем магазине то, что все время откладывал на потом. С утра снова было пасмурно, и свет в окне держался каким-то рассеянным до самого дня. В остальном ничего особенного не произошло.


Способ простой, но очень расточительный - ёмкость текста примерно 3.5 бита на предложение. Метод из статьи даёт в восемь раз больше - 28.5 бит на предложение.

В общем, тема интересная, познавательная и с большим потенциалом для копания вглубь.
🔥202🌚1
Forwarded from позитивслэк
🔥27😭5😢1
the_last_curator.pdf
2.9 MB
Обсуждали тут в чатике возможность автоматического перевода очередной книжки Денииса Тейлора из серии "Вселенная Боба" с помощью ИИ. Попробовали на предыдущих сериях - получается вполне неплохо, особенно если немного постараться с подготовкой контекста - стиль сохраняется, имена и специфичные термины тоже. В общем, тема рабочая.

А тут ещё новость про деда, который продаёт на Амазоне нейрокнижки.

В общем, стало интересно, осилит ли ИИ написание небольшого фантастического рассказа с нуля. Причём, ИИ, который живёт у меня в сарае - локальный Qwen3.6-27B.

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

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

Иллюстрации генерила локальная модель Z-Image-Turbo, промпты для которой делал Qwen. Темы для картинок тоже он предложил.

Верстка так же дело "рук" ИИ - всё сделано в typst, я только сказал название шрифта. Были небольшие проблемы с форматированием, но они решились после того, как я напомнил Квену, что он имеет зрение и может посмотреть на результат вёрстки.

В общем, итог в приложении. Моя рука не прикасалась к этому произведению, по этому все претензии к Порфирию Сарайному. 😏

Кстати, почему "куратор" я хз, название тоже ИИ придумал.

PS: При желании весь процесс можно полностью автоматизировать. А это значит, что после прихода БП будет чем занять себя сидя в бункере. ☕️
Please open Telegram to view this post
VIEW IN TELEGRAM
😁101
the_last_curator_revised.pdf
3 MB
Попросил Сола (GPT 5.6 Sol) сделать рецензию, а потом переписать рассказ на свой вкус. Вот что получилось (epub в комменах). Сам ещё не читал 👨‍💻

UPD: Версия с иллюстрациями от GPT в комментах.
UPD2: Прочитал, мощно 🍿
Please open Telegram to view this post
VIEW IN TELEGRAM
Поделюсь историей успеха на поприще ИИ-ассистированного баг-хантинга в RTL. А точнее, прорекламирую замечательную прогу для работы с дампами вейформ от нашего товарища positiveslack. Прога сделана специально для ИИ-агентов, чтобы им было удобно (и дёшево) анализировать дампы.

Суть такова. Есть проект SoC на базе софтпроца с разнообразной периферией. Есть тестбенч, где два таких SoC работают навстречу через PCIe. И есть проблема - на каком-то этапе процессор вываливается в trap.

Симуляция медленная, дамп большой, ковыряться в нём крайне неприятно - нужно держать в голове большой контекст из проводов и кода. Решил попробовать отдать это всё ИИ и попросить сделать хорошо, предварительно установив программу Wavepeek и скилл из её комплекта.

Первым пошёл локальный Qwen3.6-27b. 16 вызовов wavepeek, 300к/100к токенов входа/выхода, и вывод: переполнение стека. Переполнения, конечно же, никакого не было (с). По его рекомендации был увеличен объём памяти данных и перезапущена симуляция, результат которой ожидаемо оказался тем же самым, о чём было сообщено агенту. Следующей был выдвинута теория о том, что компилятор неправильно оптимизировал хвостовой вызов, из-за чего процессор переходил не в то место. Это предположение было сразу отвергнуто как очевидно некорректное. Это было видно и по ассемблерному коду.

Вторым заходом был запущен GLM-5.2 через облачную Ollama. На вход ему был подан тот же простой промпт, плюс отчёт с предыдущей попытки, чтобы модель не пошла по заведомо ложному пути. Всего 7 вызовов wavepeek и 76к выходных токенов и баг был найден: неправильная работа контроллера памяти с шиной AHB при определённых условиях. Поиск и исправление заняли минут 15.

Для чистоты эксперимента третий подход с снаряду снова сделал Qwen. На этот раз он получил такие же вводные, что и GLM - промпт и свой предыдущий отчёт. Удивительно, но через 4 вызова wavepeek он тоже нашел ошибку. Точнее, локализовал место, где она возникает. Причины бага он так и не смог найти. Сначала я подумал, что дело в недостаточном знании шины AHB. Но после подсовывания ему спецификации, дело не сильно сдвинулось - два часа и три перезапуска агента не дали результата, баг так и не был исправлен. Почему-то Qwen не очень хорошо ориентируется в третьем измерении RTL - latency.

Итог таков. ИИ может сильно помочь в поиске багов в RTL. Wavepeek сильно помог с парсингом вейвформ - он это делает быстро и понятно для модели. Топовая локальная модель пока не очень хороша в RTL (но я работаю над этим).

PS: Дал лог работы Qwen на анализ GPT-5.6-Sol. Вот его вывод:
Модель обладала достаточной информацией, но ей не хватило дисциплины синхронного cycle-by-cycle анализа. Она пыталась угадывать задержки и чинить отдельные сигналы вместо моделирования.

В общем, фатальной ошибкой было то, что после локализации бага не был сделан конкретный тест под конкретный кейс, а в вместо этого продолжали гонять огромную симуляцию всей системы. 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥185
В предыдущем посте я слегка ввёл в заблуждение уважаемого читателя. При подсчёте количества вызовов wavepeek я "немного" ошибся. Пересчёт показал, что модель GLM-5.2 вызвала wavepeek 65 раз. При этом всего было сделано 100 вызовов тулов (всех, не только wavepeek).

Это первое. Второе - я прогнал ту же задачу на той же модели без wavepeek. Без специального тула агенту пришлось парсить дамп "руками", для чего был создан 21 ad-hoc скрипт на питоне, 31 раз был сделан парсинг через grep/sed/awk и дополнительно - 39 прямых обращений к заголовку VCD для разведки метаданных - поиск имён сигналов, их ID, иерархии scope. Всего - 91 обращение. Общее количество tool calls - 136.

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

Удивляет другое: ручной парсинг VCD оказался не такой медленный, как я ожидал. При том, что файл весит около 500МБ (это, конечно, не гиги, но тоже немало).
🔥6🤯2
Пока я гонял железных, wavepeek обновился до версии 2.2.0. Теперь там есть парсер транзакций на шине AHB (ещё там есть APB, ATB, AXI и AXIS). Перезапустил задачу. Результат: 88 tool calls, из них 37 - wavepeek, из которых 14 - с разбором транзакций.

Ещё потестил только что вышедший DeepSeek-V4-Flash-0731. Баг он тоже нашел, но сделал 141 вызов тулов, из которых 86 - wavepeek (22 вызова с разбором транзакций AHB). Размер этой модели уже совсем близок к возможностям локальных сетапов.
👍10
logic [3:0] x;
logic [2:0] y;

assign y = 3'(x >> 1);


Чему равен y, если x == 4'b1010?
Не спешите с ответом. Если вы синтезируете в Pango ADS, то y == 3'b001.
Forwarded from позитивслэк
wavepeek 3.0

С момента моего доклада прошло некоторое время и случился переход от v0.5.0 к v3.0.0.

Краткий рекап или в предыдущих сериях:

▫️1.0 - добавлена поддержка FSDB, организованы бинарные релизы, сильный прирост по покрытию тестами и куча измений по усилению автоматизации проекта
▫️2.0 - появился потоковый вывод JSONL, внедрение pre-edge сэмплирования (мимикрия под семантику RTL и лечение off-by-1-tick ошибок)
▫️2.1 - добавлено extract семейство с первой подкомандой generic для извлечения произвольных синхронных событий (любые хэндшейки, трансферы под валидностью и пр.)
▫️2.2 - добавлены экстракторы событий AMBA протоколов (AXI, AXI-Stream, AHB, APB и ATB).
▫️3.0 - добавлены битовые диапазоны в указание любых сигналов, унификация машинного вывода, переработка и удаление некоторых команд и десяток других QoL изменений, включая рефакторинг документации

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

Сейчас тул находится в той точке, которая я рассчитываю будет стабильной и долговременной, но в любом случае возможны доработки и фиксы. Обратная связь всё ещё приветствуется и жадно собирается🔍

И да, just for fun заюзал свойство rust без проблем компилиться в wasm, и теперь есть полноценная веб версия wavepeek для демонстрации и работы без установки:
https://kleverhq.github.io/wavepeek/
Да, всё работает прямо в браузере, вейвы не покидают вашу машину.

Остался незакрытым гештальт с организацией полноценных бенчмарков, но возможно ещё к этому вернусь.
Уже например писал авторам WaveformQA из tenstorrent. Сказали что код бенча из статьи проходит их внутренних ИБшников и появится через пару недель на гитхабе (пару недель уже прошло конечно же).

Такие вот дела в вайб-eda-королевстве⌨️

#tools
@positiveslack
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍21🎉1
Рубрика "Письма читателей". Вот такая история с "аблитерированным" Qwen3.8-27B от китайского товарища с именем Хуйхуй (простите за мой китайский, но я не виноват, вот ссылка: Huihui-Qwen3.8-27B-abliterated-GGUF). Модель от китайского товарища, не история.

Аблитерация (Abliteration) - метод снятия цензуры с LLM путём обнуления весов отдельных attention head, отвечающих за отказ. Термин произошел от скрещивания двух слов - obliteration и ablation.
Обычные модели чаще всего отказываются делать вещи не очень правильные с точки зрения закона и морали. Например взлом лицензионных программ. Но аблитерирование этот запрет снимает и ИИ с энтузиазмом предлагает помощь.


Итак, вот что из этого вышло (название программы замазано, но это один из симуляторов).

Задача: три версии 😲😲😲😲😲😲 разных годов. Собраны в докер образ, но без лицензий не работают. Хочется чтобы работали.

Дано: папка с кучей рандомных кряков из интернетов, и Хуйхуй.

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

Ну и погнал отлаживаться. Там и разные схемы лицензирования (flexlm и что-то новое), и то что после патча сим всё равно лезет на сервер, и что формат лицензий между версиями отличается. В общем он недолго поковырялся с strace, поизучал существующие кряки под wine, ну и нашел минимальную схему которая удовлетворяет все версии.

В итоге один бинарь на пару мегабайт, один искусственный файл лицензий на 3 строки, прибитый MAC и всё работает.

По точности действий и отсутствию затупов это натурально вайбы фронтира, и всё локально. Ну и да, без какого-либо нытья "я это делать не буду, бла бла бла".
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍1
Позорище. Подключил модули CC1101 к Ардуино и попросил локального железного поднять линк. Он час ковырялся, а потом сказал, что я дятел, спалил два хороших модуля. Потому что у Ардуины выходы 5В, а у СС1101 входы не толерантны. Радиоинженер, то же мне 😫
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10😁41