Как стать автором
Обновить

Комментарии 11

Интересная реализация. Я думаю она хорошо подходит для экспериментов

Надо ещё подобрать простые, но откалиброванные, веса из какой то узкой области и баловаться с разными архитектурами нейросетей.

на гитхабе:

First download the GPT-2 neural network

bash download.sh

содержимое download.sh:

curl https://openaipublic.blob.core.windows.net/gpt-2/models/124M/vocab.bpe > vocab.bpe
curl https://openaipublic.blob.core.windows.net/gpt-2/models/124M/model.ckpt.data-00000-of-00001  > gpt2-124M.ckpt

Эта статья вызвала мой интерес не тем, что она про нейросети, а видом сжатого С-кода. Дело в том, что очень похожий стиль принят среди разработчиков на языках k и q, и интерпретаторы этих языков часто пишут в таком сжатом стиле, который мне даётся с трудом. Я подумал, что ну вот, может тут расскажут, как писать такое, поделятся секретами. А нифига, я сходил на github, и там исходники лежат в гораздо более понятном виде, и питоновский скрипт, который выполняет сжатие. Но при ближайшем рассмотрении оказалось, что питоновский скрипт делает довольно тупые действия, и автору в основном исходнике приходится самому прибегать к препроцессорной магии.

Когда я дошёл до раздела, где объясняется препроцессорная магия для матрично-скалярных и матрично-матричных операций, я сначала нифига не понимал, до тех пор, пока исходники не почитал. Дело в том, что в тексте вроде как define-ится BINARY с двумя аргументами (function и operation) в нижнем регистре, а потом в теле этого BINARY эти же аргументы стоят в верхнем регистре (FUNCTION и OPERATION), это очень сбивает с толку. Это не проблема перевода, в оригинальном тексте тоже так, в исходниках всё норм (fn и opr везде). Ну и раз уж зашла речь про BINARY, то я бы в начале проверил, что размеры матриц совпадают, fail fast и всё такое. Забавно, что он вводит поэлементное умножение и деление матриц, я такого не видел в математике, но у него находит применение в LayerNorm.

В описании математического матричного умножения у автора тоже косяк, в первом, неоптимизированном варианте остались k2 и j2.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации