/ Модель

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

Контекст
65 536 токенов
Архитектура
reformer · dense
Опубликована
2 мар 2022

reformer-enwik8

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

Посимвольная языковая модель Reformer, обученная на enwik8 для генерации текста и экспериментов со сжатием.

6 669скачиваний за 30 дней22лайкавеса обновлены24 янв 2023

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

google/reformer-enwik8 — символьная языковая модель Reformer от Google, преобразованная в формат PyTorch Hugging Face. Она предварительно обучена на первых 90 млн символов набора enwik8, основанного на текстах Википедии, и предназначена для генерации текста на уровне символов. Токенизатор не требуется; контекст составляет 65 536 токенов, соответствующих символам.

Модель подходит для экспериментов с посимвольной генерацией и оценки способности языковых моделей сжимать текст на enwik8. Генерация через ReformerModelWithLMHead работает медленно и не оптимизирована. Лицензия в предоставленных данных не указана.

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

  • генерация продолжения английского текста посимвольно
  • эксперименты с языковым моделированием на уровне символов
  • оценка качества сжатия текста на наборе enwik8

Ограничения

Генерация текста через ReformerModelWithLMHead пока не оптимизирована и работает медленно. Обучение охватывает первые 90 млн символов enwik8, поэтому назначение модели ограничено этим экспериментальным корпусом.

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

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

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

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

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

Открыть на Hugging Face

Reformer Language model on character level and trained on enwik8.

enwik8 is a dataset based on Wikipedia and is often used to measure the model's ability to compress data, e.g. in the scope of the Hutter prize: https://en.wikipedia.org/wiki/Hutter_Prize.

reformer-enwik8 was pretrained on the first 90M chars of enwik8 whereas the text was chunked into batches of size 65536 chars (=2^16). The model's weights were taken from https://console.cloud.google.com/storage/browser/trax-ml/reformer/enwik8 and converted to Hugging Face's PyTorch ReformerLM model ReformerModelWithLMHead.

The model is a language model that operates on characters. Therefore, this model does not need a tokenizer. The following function can instead be used for encoding and decoding:

import torch

# Encoding
def encode(list_of_strings, pad_token_id=0):
    max_length = max([len(string) for string in list_of_strings])

    # create emtpy tensors
    attention_masks = torch.zeros((len(list_of_strings), max_length), dtype=torch.long)
    input_ids = torch.full((len(list_of_strings), max_length), pad_token_id, dtype=torch.long)

    for idx, string in enumerate(list_of_strings):
        # make sure string is in byte format
        if not isinstance(string, bytes):
            string = str.encode(string)

        input_ids[idx, :len(string)] = torch.tensor([x + 2 for x in string])
        attention_masks[idx, :len(string)] = 1

    return input_ids, attention_masks
    
# Decoding
def decode(outputs_ids):
    decoded_outputs = []
    for output_ids in outputs_ids.tolist():
        # transform id back to char IDs < 2 are simply transformed to ""
        decoded_outputs.append("".join([chr(x - 2) if x > 1 else "" for x in output_ids]))
    return decoded_outputs

Text can be generated as follows:

from transformers import ReformerModelWithLMHead

model = ReformerModelWithLMHead.from_pretrained("google/reformer-enwik8")
encoded, attention_masks = encode(["In 1965, Brooks left IBM to found the Department of"])
decode(model.generate(encoded, do_sample=True, max_length=150))

# gives:
# In 1965, Brooks left IBM to found the Department of Journalism in 1968. IBM had jurisdiction himself in 1980, while Brooks resolved, nevertheless thro

Note: Language generation using ReformerModelWithLMHead is not optimized yet and is rather slow.

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
ReformerModelWithLMHead
Ревизия весов
852b2f5

0 моделей