All streams
Search
Write a publication
Pull to refresh
97
168.8
Евгений @interpres

User

Send message

Радость создания хобби-программ

Level of difficultyEasy
Reading time8 min
Views10K

Мне очень нравится знаменитая цитата Ричарда Фейнмана:

«То, что я не могу создать, я не понимаю»

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

Сегодня, в 2025 году, красота и ремесло написания ПО подвергаются разрушению. ИИ угрожает тем, что заменит нас (или, по крайней мере, заберёт все самые приятные аспекты нашего ремесла), а разработка ПО становится всё более стандартизированной, выверенной, упакованной и индустриализированной. Разработке программного обеспечения нужно больше простых удовольствий. Я выяснил, что создание хобби-программ — отличный способ снова напомнить себе, почему вообще я начал работать с компьютерами.

Читать далее

Что же такое TPU

Level of difficultyEasy
Reading time14 min
Views16K

В последнее время я много работал с TPU и мне было интересно наблюдать такие сильные различия в их философии дизайна по сравнению с GPU.

Главная сильная сторона TPU — это их масштабируемость. Она достигается благодаря и аппаратной (энергоэффективности и модульности), и программной стороне (компилятору XLA).

Общая информация

Если вкратце, то TPU — это ASIC компании Google, делающий упор на два фактора: огромную производительность перемножения матриц + энергоэффективность.

Их история началась в Google в 2006 году, когда компания впервые начала размышлять о том, что же ей стоит реализовывать: GPU, FPGA или специализированные ASIC. В те времена было лишь несколько областей применения, в которых требовалось специализированное оборудование, поэтому было решено, что потребности компании можно удовлетворить при помощи незадействованных вычислительных ресурсов (compute) CPU её крупных датацентров. Но в 2013 году ситуация изменилась: функция голосового поиска Google начала использовать нейросети, и по расчётам для её реализации потребовалось бы гораздо больше compute.

Перенесёмся в настоящее: сегодня TPU лежат в основе большинства ИИ-сервисов Google. Разумеется, сюда включены обучение и инференс Gemini и Veo, а также развёртывание моделей рекомендаций (DLRM).

Давайте начнём разбирать внутренности TPU с самого нижнего уровня.

Читать далее

Самый быстрый способ нахождения гласной в строке

Level of difficultyEasy
Reading time9 min
Views14K

Недавно меня заинтересовала такая задача: как лучше всего определить, что в строке есть гласная?

Казалось бы, тривиальный вопрос, правда?

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

В этом посте я рассмотрю 11 способов обнаружения гласных, алгоритмический анализ, дизассемблирование байт-кода Python, реализацию CPython и даже исследую опкоды скомпилированного регулярного выражения. Поехали!

Читать далее

Ищем игры для Atari в случайных данных

Level of difficultyEasy
Reading time24 min
Views12K

В рамках этого проекта я сгенерировал около 30 миллиардов файлов случайных данных по 4 КБ. Из этих файлов на основании эвристик из полной коллекции файлов ROM Atari было выбрано примерно 10 тысяч. Затем система классификатора просканировала их при помощи эмулятора Atari 2600, чтобы проверить, окажется ли какой-то из этих случайных файлов игрой для Atari. Этот проект отвечает на вопросы, которые никто не задавал, он никому не нужен и представляет собой огромную пустую трату ресурсов. Что, если засунуть в GPU миллиард обезьян и заставить их написать игру для Atari 2600?

Благодаря прогрессу GPU, ИИ и машинного обучения сегодня мы можем (очень быстро) написать на Python скрипт, который дампит мусор в ROM по 4 КБ и спрашивает: «похоже ли это на игру?». Проект был создан не из ностальгии, моей первой консолью была NES. Я вознамерился исследовать нечто невообразимо обширное и посмотреть, найдётся ли там что-нибудь странное.

Читать далее

Реверс-инжиниринг индикатора воздушной скорости 1977 года

Level of difficultyEasy
Reading time8 min
Views6.6K

Как работает старый индикатор воздушной скорости? CuriousMarc приобрёл такое устройство для своего проекта, но при нём не было документации, поэтому я выполнил его реверс-инжиниринг. Этот индикатор использовался в панелях кокпитов таких самолётов бизнес-класса, как Gulfstream G-III, Cessna Citation и Bombardier Challenger CL600. Судя по датам на транзисторах, он был изготовлен примерно в 1977 году.

Можно было бы ожидать, что индикаторы на панели управления самолётом — это простые круговые шкалы. Но за этой шкалой спрятана большая коробка массой 1,27 килограмма со сложной системой двигателей, шестерён и потенциометров обратной связи, управляемой двумя электронными платами. Но при всей этой сложности, в индикаторе нет ничего особо «умного»: стрелки просто указывают напряжение, передаваемое от вычислителя воздушных параметров. В этом посте я вкратце опишу свои находки.

Читать далее

Резервуарное сэмплирование и собачки

Level of difficultyEasy
Reading time8 min
Views3.3K

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

Когда может потребоваться резервуарное сэмплирование.

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

Простой способ реализации резервуарного сэмплирования на случай, если вам оно понадобится.

Читать далее
2

Information

Rating
37-th
Works in
Registered
Activity

Specialization

System Administration