LINUX.ORG.RU
ФорумTalks

Нейросеть трансформер на PDP 11/40

 , ,


1

1

Это не шутка. Крутой дед из настоящих сумел это сделать. Реальный программюга!

https://www.youtube.com/watch?v=OUE3FSIk46g

В этом ролике на ютубе он немного рассказывает про свою коллекцию старых компов, объясняет про работу нейросетей вообще и трансформеров в частности, как он написал простенький трансформер на ассемблере для PDP-11. На машине с 32 Кб RAM, сама программа, включая обучение с back propagation, занимает чуть более 6 Кб. Конечно что-то серьёзное на таких ресурсах не заработает, но всё же это настоящий трансформер. У нейросетки 1200+ параметров, одна голова внимания. Контекст из 8 символов (Или только цифр? Не совсем понял). Нейросетка за несколько минут обучается переворачивать в обратном порядке входное число из 8 цифр.

На видео всё есть: и машины и как панель PDP мигает лампочками и результат работы.

Дэйв Пламмер (Dave Plummer) - бывший программист из Microsoft, в частности, он написал Task Manager для NT.

сама программа, включая обучение с back propagation, занимает чуть более 6 Кб

А что в этом удивительного? Алгоритм нейронки — перемножение матриц плюс функция активации в цикле. Алгоритм обратного распространения чуть сложнее, но тоже небольшой.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

А что в этом удивительного?

Да, как бы и ничего удивительного, когда всё известно.

Но почему-то никто из исследователей в 70-80-е ничего похожего не написал, реальные сетки с обучением с алгоритмом обратного распространения впервые стал писать Лекун в 1988-89-х годах. Причём, хотя алгоритм был придуман ещё в начале 70-х, первые экспериментальные реализации кажется только в 1986-м появились у Хинтона и Руммельхада. А трансформеры придумали вообще в 2017-18-х.

Да и просто упихать всё обучение и инференс в 6 Кб ассемблерного кода надо потрудиться.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от anonymous_incognito

никто из исследователей в 70-80-е ничего похожего не написал

Это потому, что чтобы на этом сделать что-то полезное, надо железо современного уровня.

goingUp ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Но почему-то никто из исследователей в 70-80-е ничего похожего не написал

Это что-то из разряда: почему игру Crysis смогли сделать только в 2007 году.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от anonymous_incognito

Но почему-то никто из исследователей в 70-80-е ничего похожего не написал

Писали, например:
Ивахненко А.Г., МГУА (1968 г.) © (bauman-team.github.io).
Галушкин А.И., Синтез многослойных систем распознавания образов (1974 г.) © (urss.ru).
Васильев В.И., Распознающие системы, справочник, (1983 г.) © (nashol.me).

Тогдашние «железячные технологии» были недостаточны для нынешней «умности».

quickquest ★★★★★
()
Ответ на: комментарий от goingUp

Это потому, что чтобы на этом сделать что-то полезное, надо железо современного уровня.

BceM_IIpuBeT

Это что-то из разряда: почему игру Crysis смогли сделать только в 2007 году.

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

Чтобы полезное сделать, разумеется, 32 Кб RAM было недостаточно. Но 4 Мб RAM уже могло бы хватить на модель с 100-200 тысячами параметров, которая могла бы продемонстрировать элементы интеллекта в виде простой классификации текста на 2-3 класса (например, отрицательное отношение, положительное, нейтральное), распознавать категории товаров (кроссовки - товар и тп). Впрочем, для NLP-задач это наверное осталось бы всё-таки демонстрационной игрушкой, а вот CNN-сеть, работающая с изображениями, уже могла бы весьма полезной оказаться.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от quickquest

Писали, например:

Интересно конечно, но интересны ещё и практические реализации, а то например, я с удивлением узнал, что между теоретическим предложением алгоритма обучения через обратное распространение ошибок и первыми практическими реализациями прошло лет 15. Хотя казалось бы, в сущности, последовательность вычислений производных сложной функции.

Кроме того, Ивахненко А.Г., МГУА (1968 г.) © (bauman-team.github.io).

Очень интересно, даже не знал, но навскидку из описания сразу думаю, что при сколько-то большом количестве параметров МГУА столкнется с комбинаторным взрывом при переборе вариантов, т.е, вычислительной невозможностью на практике рассчитать. Но может быть интересно при малом совсем количестве параметров.

Галушкин А.И., Синтез многослойных систем распознавания образов (1974 г.) © (urss.ru).

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

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

Васильев В.И., Распознающие системы, справочник, (1983 г.) © (nashol.me).

Интересно. Спасибо за книги. Но всё это существовало словно в каком-то параллельном мире :)

Тогдашние «железячные технологии» были недостаточны для нынешней «умности».

В том-то и дело, что при правильном подходе потенциально могли больше получаемого в тогдашних экспериментах.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от anonymous_incognito

почему-то никто из исследователей в 70-80-е ничего похожего не написал

перцептрон был реализован в 1960м на Марк1

а непосредственно трансформер был представлен в 2017м году гуглом, наверное поэтому :)

sergej ★★★★★
()
Ответ на: комментарий от sergej

ну и ассемблер пдп11 очень хороший, до сих пор некоторые машинные коды помню

sergej ★★★★★
()
Ответ на: комментарий от sergej

перцептрон был реализован в 1960м на Марк1

а непосредственно трансформер был представлен в 2017м году гуглом, наверное поэтому :)

Я, в первую очередь, про метод обратного распространения ошибок для обучения многослойной сети. Похоже, что в СССР его реально применили ещё в 70-е, Галушкин в своей книге описал его в 1974-м году и что-то там на его фотографиях в железе работало.

Но на Западе пионерами считаются Хинтон, Руммельхард и Уильямс в 1986-м, хотя ещё в 1970-м году его представил в магистерской диссертации в Хельсинки финский студент Сеппо Линнаинмаа. Ну да, кто в науке обращает внимание на дипломные работы студентов? :) Так ведь в 1974-м году ещё и Пол Вербос в докторской в Гарварде представил метод. И вот ещё 11 лет мимо внимания проходило, а фактически и все 14-15 до работ Лекуна.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от anonymous_incognito

Вот, я как-то задавался вопросом, ИИ-исследования 80-х как-то пригодились в нынешней ИИ-шечке? И ЛОР ответил, что в целом, не особо.

tiinn ★★★★★
()
Ответ на: комментарий от unclestephen

практическое применение у этого есть какое-то?

Разве что учебно-демонстрационное, если код доступен: всё же хоть и в миниатюре, но технически полноценна сетка и обучение.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Вот, я как-то задавался вопросом, ИИ-исследования 80-х как-то пригодились в нынешней ИИ-шечке? И ЛОР ответил, что в целом, не особо.

Ну как сказать не особо. Без тех исследований не было бы совремённых. Причём, ещё такой интересный момент, не разобрался ещё толком, но к моему удивлению, похоже, что в 70-80-е СССР существенно опережал США по практическому использованию ML и нейросетей, судя по Нейросеть трансформер на PDP 11/40 (комментарий)

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от anonymous_incognito

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

tiinn ★★★★★
()
Ответ на: комментарий от anonymous_incognito

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

tiinn ★★★★★
()

Классный видос. Теперь я точно знаю, какую футболку сделаю себе. ;⁠-⁠) :⁠-⁠D

sparkie ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)