/ Модель

Характеристики

Контекст
1 024 токена
Параметры
23,3 млн
Лицензия
MIT
Архитектура
llama · dense
Опубликована
17 июн 2024

linux-as-a-model-32M

Генерация текстаТекст → текст3 профессии

Экспериментальная модель семейства Llama, обученная запоминать и генерировать исходный код Linux 1.0.

122скачиваний за 30 дней4лайкавеса обновлены18 июн 2024

Бенчмарки

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

Тесты пользователейпока нет

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

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

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

Публичные оценки

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

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

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

LaaM (Linux as a Model) — экспериментальная модель, созданная Майком Боммаром для демонстрации того, как простой трансформер может запоминать и воспроизводить исходный код Linux версии 1.0. Репозиторий описывает обучение на коде ядра под лицензией GPL-2.0 и связывает пример с обсуждением прозрачности и лицензирования обучающих данных. По метаданным это плотная авторегрессионная модель семейства Llama с архитектурой LlamaForCausalLM, примерно 23,3 млн параметров и контекстом 1024 токена.

Модель предназначена для генерации текста, в частности для воспроизведения фрагментов запомненного исходного кода Linux 1.0. README упоминает пример отдельной 5-миллионной модели, поэтому его характеристики не следует переносить на этот вариант. Модель опубликована в формате safetensors под лицензией MIT; исходный код Linux, использованный для обучения, описан как лицензированный GPL-2.0.

Сценарии применения

  • генерация фрагментов исходного кода Linux 1.0
  • демонстрация запоминания обучающих данных языковой моделью
  • изучение генерации кода небольшой авторегрессионной моделью

Ограничения

Модель обучена на узком наборе данных для демонстрации запоминания кода; README не заявляет о пригодности для общего программирования. Контекст ограничен 1024 токенами.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

LaaM - Linux as a Model

What happens when we train a simple transformer model to memorize the GPL2 source of the Linux kernel?

Source

https://github.com/mjbommar/laam

Motivation

Simply put, the OSI is making a grave mistake by ignoring the most important transitive dependency in AI - the training data.

As of the latest version of The Open Source AI Definition (draft v. 0.0.8), the OSI has decided that the legal status of training data is irrelevant to their subsequent "approval" of models as "open."

The argument in favor of this omission is that such a requirement would be inconvenient and legally ambiguous in some jurisdictions.

This would be like Creative Commons encouraging the authors of textual or audiovisual works to ignore the terms of copyleft licenses.

Simply put, organizations like the OSI must take a clear, common sense stance: "AI" models like text or multimodal LLMs cannot be considered "open" if they are trained on "stolen" or "closed source" data.

Details

To demonstrate how ridiculous the OSI's position is, I have trained simple transformer models to memorize the source code of Linux version 1.0, which is licensed under the GPL2.

This model is documented and trained in perfect compliance with the OSI's draft guidance on Data Information, Code, and Model sections. All source code is available in the GitHub repository, all dependencies are open source, all input training data is directly described by the source code, and all model weights are available on Hugging Face.

Example Model - 5M parameter Llama2 architecture

For example, this 5M parameter model can be trained on practically any device in a minutes to hours. The model trivially emits copies of Linux 1.0 source code. For example, using the HuggingFace hub copy at mjbommar/linux-as-a-model-5M:

>>> from transformers import pipeline
>>> p = pipeline('text-generation', 'mjbommar/linux-as-a-model-32M')
>>> print(p('', max_new_tokens=256, do_sample=True, temperature=0.2)[0]['generated_text'])
 linux/drivers/FPU-emu/reg_u_div.S.file "reg_u_div.S"
/*---------------------------------------------------------------------------+
 | reg_u_div.S |
 | |
 | Core division routines |
 | |
 | Copyright (C) 1992,1993 |
 | W. Metzenthen, 22 Parker St, Ormond, Vic 3163, |
 | Australia. E-mail billm@vaxc.cc.monash.edu.au |
 | |
 |

License

For the sake of demonstration, I have licensed the model source and weights under the MIT terms, and the OSI should support this model as completely open and compliant with their draft guidance.

Train your own model

# ensure poetry available
# curl -sSL https://install.python-poetry.org | python3 -

# setup poetry environment
$ poetry install --no-root

# optionally install flash-attn
# poetry run pip install wheel
# MAX_JOBS=4 poetry run pip install flash-attn --no-build-isolation

# train a tokenizer with fixed vocab size on linux version 1.0
$ PYTHONPATH=. poetry run python3 -m laam.commands.train_tokenizer \
    --version v1.0/1.0 \
    --vocab-size 32768

# train a 5M parameter model on it

# stage 1: large batch size, 1e-3 learning rate to safely converge near solution 
$ PYTHONPATH=. poetry run accelerate launch \
    laam/commands/train_llama.py \
    --version v1.0/1.0 \
    --precision bfloat16 \
    --hidden_size 64 \
    --intermediate_size 256 \
    --num_hidden_layers 8 \
    --num_attention_heads 32 \
    --max_position_embeddings 512 \
    --learning_rate 0.001 \
    --batch_size 64 \
    --epochs 100
    
# stage 2: single sample batches with 1e-4 learning rate to memorize
$ PYTHONPATH=. poetry run accelerate launch \
    laam/commands/train_llama.py \
    --version v1.0/1.0 \
    --precision bfloat16 \
    --reload \
    --learning_rate 0.0001 \
    --batch_size 1 \
    --epochs 100

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
LlamaForCausalLM
Ревизия весов
b4003a5

0 моделей