👉Введение Тэн Сяоюнь
Эта статья основана не на тонкой настройке модели обучения, а на подробном руководстве по обучению новой модели большого языка с нуля. Прочитав эту статью, вы поймете, что требуется для подготовки большой модели, например, подготовка среды, подготовка данных, генерация сегментации слов, обучение модели и тестирование модели. Удобен для новичков в области искусственного интеллекта. Код из этой статьи можно напрямую запустить на практике. Добро пожаловать в мир чтения.
С помощью этой статьи вы можете предварительно обучить новую большую языковую модель.
Обратите внимание, что это совершенно новая модель, а не доработка.
Преимущество нового обучения заключается в том, что данные обучения и параметры обучения можно изменять. Благодаря отладке и запуску мы можем лучше понять процесс обучения большой модели. Мы можем использовать обучение на определенных типах данных, чтобы завершить вывод определенных типов данных.
Было много статей о больших моделях, больше о точной настройке моделей и очень мало статей о новых предварительно обученных моделях. Лично я считаю, что некоторые из них очень сложны, и код сложно выполнить. Эта статья не сделает ее слишком сложной, а код легко запустить. Всего лишь 61 строка кода позволяет обучить новую большую языковую модель.
В этой статье основное внимание уделяется коду, а для его запуска требуется среда Python.
Моя среда обучения основана на графическом процессоре Tencent Cloud.
Адрес: https://cloud.tencent.com/product/gpu
tokenizers==0.13.3
torch==2.0.1
transformers==4.30.
Сначала нам нужно подготовить данные для обучения. Например, я хочу обучить модель на основе «Романа трех королевств». Адрес для скачивания Романтика трёх королевств:
https://raw.githubusercontent.com/xinzhanguo/hellollm/main/text/sanguoyanyi.txt
Токенизация — это процесс разделения входного текста на значимые части (токены). Сгенерируйте новый токенизатор на основе наших данных с помощью следующего кода:
from tokenizers import Tokenizer
from tokenizers.models import BPE
from tokenizers.trainers import BpeTrainer
from tokenizers.normalizers import NFKC, Sequence
from tokenizers.pre_tokenizers import ByteLevel
from tokenizers.decoders import ByteLevel as ByteLevelDecoder
from transformers import GPT2TokenizerFast
# Создайте токенизатор GPT2 на основе BPE Реализация алгоритма
tokenizer = Tokenizer(BPE(unk_token="<unk>"))
tokenizer.normalizer = Sequence([NFKC()])
tokenizer.pre_tokenizer = ByteLevel()
tokenizer.decoder = ByteLevelDecoder()
special_tokens = ["<s>","<pad>","</s>","<unk>","<mask>"]
trainer = BpeTrainer(vocab_size=50000, show_progress=True, inital_alphabet=ByteLevel.alphabet(), special_tokens=special_tokens)
# создавать text папку и положить sanguoyanyi.txt Скачайте и поместите в каталог
files = ["text/sanguoyanyi.txt"]
# Начало обучения
tokenizer.train(files, trainer)
# Сохраните обученную сегментацию слов через GPT2 для последующего использования.
newtokenizer = GPT2TokenizerFast(tokenizer_object=tokenizer)
newtokenizer.save_pretrained("./sanguo")
Во время работы отображается следующий рисунок:
После успешного запуска кода мы генерируем следующие файлы в каталоге sanguo:
merges.txt
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.json
Теперь мы успешно обучили токенизатор для большой языковой модели.
Используйте следующий код для обучения модели:
from transformers import GPT2Config, GPT2LMHeadModel, GPT2Tokenizer
# Загрузить токенизатор
tokenizer = GPT2Tokenizer.from_pretrained("./sanguo")
tokenizer.add_special_tokens({
"eos_token": "</s>",
"bos_token": "<s>",
"unk_token": "<unk>",
"pad_token": "<pad>",
"mask_token": "<mask>"
})
# Настройка параметров GPT2Model
config = GPT2Config(
vocab_size=tokenizer.vocab_size,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
# создавать Модель
model = GPT2LMHeadModel(config)
# Для обучения данных мы используем разделение строк
from transformers import LineByLineTextDataset
dataset = LineByLineTextDataset(
tokenizer=tokenizer,
file_path="./text/sanguoyanyi.txt",
block_size=32,
# Если во время тренировки не хватает видеопамяти
# Можно отрегулировать соответствующим образом block_size
)
from transformers import DataCollatorForLanguageModeling
data_collator = DataCollatorForLanguageModeling(
tokenizer=tokenizer, mlm=False, mlm_probability=0.15
)
from transformers import Trainer, TrainingArguments
# Настройка параметров обучения
training_args = TrainingArguments(
output_dir="./output",
overwrite_output_dir=True,
num_train_epochs=20,
per_gpu_train_batch_size=16,
save_steps=2000,
save_total_limit=2,
)
trainer = Trainer(
model=model,
args=training_args,
data_collator=data_collator,
train_dataset=dataset,)
trainer.train()
# 保存Модель
model.save_pretrained('./sanguo')
Операция занимает относительно много времени, а данные обучения отображаются, как показано ниже:
После успешного запуска кода мы обнаружили, что в каталоге sanguo есть еще три файла:
config.json
generation_config.json
pytorch_model.bin
Теперь мы успешно сгенерировали и обучили большую языковую модель на основе «Романа трех королевств».
Мы используем генерацию текста для тестирования модели. Код выглядит следующим образом:
from transformers import pipeline, set_seed
generator = pipeline('text-generation', model='./sanguo')
set_seed(42)
txt = генератор("Лу Бу", max_length=10)
print(txt)
Модель бегущего дисплея выводит текст, связанный с Тремя Королевствами: «Двенадцать глав Люй Бу, Чжан Иде, Время Чжан Иде, Цао Цао, У Хоу Цзи Цзи Цзи».
Еще один тест:
txt = генератор("Воспроизвести музыку", max_length=10)
print(txt)
«Затем заиграла музыка, но было сказано, что Цао Цао возглавил армию из-за двух человек»
На этот контент трудно смотреть. Если мы хотим оптимизировать, мы также можем выполнить тонкую настройку обучения на основе новой модели, мы также можем соответствующим образом настроить параметры обучения для достижения лучших результатов;
Ниже приводится полный код, адрес кода:
https://github.com/xinzhanguo/hellollm/blob/main/sanguo.py
Как запустить в Linux:
# создаватьсреда
python3 -m venv ~/.env
# Загрузить среду
source ~/.env/bin/activate
# Скачать код
git clone git@github.com:xinzhanguo/hellollm.git
cd hellollm
# Установить зависимости
pip install -r requirements.txt
# запустить код
python sanguo.py
Выше мы завершили обучение совершенно новой модели. Всего имеется 61 строка кода, не считая пустых строк комментариев.
Модель кода в этой статье основана на GPT2. Конечно, вы также можете реализовать новую модель большого языка на основе таких моделей, как LLama или Bert.
Несмотря на то, что кода не так много, вы можете столкнуться со многими проблемами, если попытаетесь запустить его в первый раз, например, с настройкой среды. Чтобы избежать других неприятностей, рекомендую запускать код с помощью докера:
# Скачать код
git clone git@github.com:xinzhanguo/hellollm.git
cd hellollm
# Скомпилировать изображение
docker build -t hellollm:beta .
# Возможность запуска в режиме графического процессора
# docker run -it --gpus all hellollm:beta sh
docker run -it hellollm:beta sh
python sanguo.py
Дополнительные коды см. в разделе: Привет, LLM!
https://github.com/xinzhanguo/hellollm
Выше приведено все содержание этой статьи. Добро пожаловать, чтобы пересылать и делиться.
-End-
Автор оригинала|Синь Чжанго
Технический редактор|jipingjia
ты думаешь, оно большое?Модель Каковы сценарии применения??Добро пожаловать вОблачный разработчик TencentОфициальный аккаунт评论区讨论。мы выберем1самый значимый обмен,отправить Облачный разработчик Tencent - 1 кружка (см. картинку ниже). Розыгрыш лотереи состоится в 12:00 24 июля.
🌟Дополнительные преимущества
Поделитесь этой статьей со своим кругом друзей, сделайте снимок экрана, ответьте [61] на заднем фоне официального аккаунта, и вы сможете принять участие в розыгрыше кружки (3 места).
* Розыгрыш благотворительной акции завершится в 12:00 26 июля 2023 г.
➤ Инженеры-алгоритмы глубоко деконструируют технологию ChatGPT
➤ С этой волной все в порядке. Наконец, эксперт подробно объяснил GPT-4.
➤ Углубленный анализ ChatGPT: эволюционная история семейства GPT
➤ По сравнению с ChatGPT, здесь появился новый AI-помощник Клод.
➤ Практика парного программирования GPT4, реальный опыт исследований и разработок Goose Factory.
➤ Как программисты Goose Factory используют ChatGPT? Как эффективно использовать подсказку?
➤ Пусть ИИ работает на вас? Руководство GPT по повышению эффективности разработки
➤ Можно ли зарабатывать миллион в год, не написав код? Практика разработки Prompt+ с низким кодом
➤ Я дал ИИ предложение требований, а он мне его фактически вернул.
➤ Вы все еще используете ChatGPT, который не понимает человеческую речь?
➤ Под волной AIGC, реальный опыт работы нового поколения фронтенд-менеджеров в Goose Factory
➤ Кто стоит за GPT и обеспечит максимальную вычислительную мощность для обучения больших моделей?
➤ QQGC? Раскрытие технологии искусственного интеллекта QQ для рисования больших моделей
➤ Для новичков, которые хотят играть в AIGC: научим вас создавать графический и видео-сайт с нуля.
➤ Собирайте скорее! Научите вас шаг за шагом, как рисовать с помощью ИИ
➤ 3 часа на разработку апплета ChatGPT WeChat
➤ Десять вопросов ChatGPT: начинается новая эра
➤ 154-страничный отчет GPT-4 заполняет экран: упоминаются эти новые возможности и недостатки.
➤ Ночной чат экспертов TVP: всех разработчиков, которые не используют ChatGPT, следует уволить.
Темы знаний AIGC постоянно обновляются...
Следите за разработчиками Tencent Cloud и отмечайте их
Будьте первым, кто увидит технологию гусиного завода и практические навыки AIGC