LLM(대형 언어 모델)은 자연어를 이해하고 생성하도록 설계된 인공 지능 (AI)의 하위 집합입니다. 이러한 모델은 방대한 양의 텍스트 데이터를 학습하고 복잡한 알고리즘을 사용하여 언어 패턴을 학습합니다. LLM은 챗봇부터 언어 번역 서비스까지 다양한 애플리케이션을 개발하는 데 사용되었습니다. 이 기사에서는 단일 컴퓨터에서 LLM을 생성하는 방법과 소스 코드 예제를 제공하는 방법에 대해 설명합니다.
시작하기 전에 컴퓨터가 다음 요구 사항을 충족하는지 확인하는 것이 중요합니다.
Anaconda는 데이터 과학 및 기계 학습을 위한 인기 있는 오픈 소스 플랫폼입니다. 여기에는 LLM을 만드는 데 사용할 다양한 도구와 라이브러리가 포함되어 있습니다. Anaconda를 설치하려면 다음 단계를 따르세요.
공식 웹사이트( https://www.anaconda.com/products/individual )에서 Anaconda 설치 프로그램을 다운로드하세요.
터미널을 열고 설치 프로그램이 다운로드된 디렉터리로 이동합니다.
다음 명령을 입력하여 설치 프로그램을 실행합니다: bash Anaconda3–2021.11-Linux-x86_ 64.sh
화면의 지시에 따라 설치를 완료하세요.
LLM에 필요한 라이브러리와 종속성을 설치하기 위해 Python 환경을 만듭니다. 환경을 만들려면 다음 단계를 따르세요.
터미널을 열고 다음 명령을 입력합니다: conda create — name lm python=3.8
conda activate lm을 입력하여 환경을 활성화하십시오.
TensorFlow는 머신러닝 모델을 구축하고 훈련하기 위한 오픈소스 플랫폼입니다. TensorFlow를 사용하여 LLM을 생성하겠습니다. TensorFlow를 설치하려면 다음 단계를 따르세요.
터미널에 다음 명령을 입력하세요: pip install tensorflow
TensorFlow를 Python으로 가져와서 설치되어 있는지 확인합니다. tensorflow를 tf로 가져옵니다.
LLM을 처음부터 교육하려면 엄청난 양의 계산 능력과 시간이 필요합니다. 운 좋게도 특정 사용 사례에 맞게 미세 조정할 수 있는 사전 훈련된 모델을 사용할 수 있습니다. 가장 인기 있는 사전 훈련된 LLM 중 하나는 GPT-2(Generative Pre-trained Transformer 2)입니다. 사전 학습된 GPT-2 모델을 다운로드하려면 다음 단계를 따르세요.
터미널을 열고 다음 명령을 입력하십시오: git clone https://github.com/openai/gpt-2.git
다음을 입력하여 gpt-2 디렉터리로 이동합니다. cd gpt-2
python download_model.py 117M을 입력하여 사전 훈련된 모델을 다운로드합니다.
사전 훈련된 LLM을 미세 조정하려면 특정 작업에 대한 특정 데이터 세트에 대한 모델을 훈련하는 것이 포함됩니다. 이 예에서는 텍스트 생성 작업에 대해 사전 훈련된 GPT-2 모델을 미세 조정합니다. 모델을 미세 조정하려면 다음 단계를 따르세요.
import tensorflow as tf import numpy as np import os import json import random import time import argparse # Define the command-line arguments parser = argparse.ArgumentParser() parser.add_argument("--dataset_path", type=str, required=True, help="Path to the dataset") parser.add_argument("--model_path", type=str, required=True, help="Path to the pre-trained model") parser.add_argument("--output_path", type=str, required=True, help="Path to save the fine-tuned model") parser.add_argument("--batch_size", type=int, default=16, help="Batch size for training") parser.add_argument("--epochs", type=int, default=1, help="Number of epochs to train for") args = parser.parse_args() # Load the pre-trained GPT-2 model with open(os.path.join(args.model_path, "hparams.json"), "r") as f: hparams = json.load(f) model = tf.compat.v1.estimator.Estimator( model_fn=model_fn, model_dir=args.output_path, params=hparams, config=tf.compat.v1.estimator.RunConfig( save_checkpoints_steps=5000, keep_checkpoint_max=10, save_summary_steps=5000 ) ) # Define the input function for the dataset def input_fn(mode): dataset = tf.data.TextLineDataset(args.dataset_path) dataset = dataset.repeat() dataset = dataset.shuffle(buffer_size=10000) dataset = dataset.batch(args.batch_size) dataset = dataset.map(lambda x: tf.strings.substr(x, 0, hparams["n_ctx"])) iterator = dataset.make_one_shot_iterator() return iterator.get_next() # Define the training function def train(): for epoch in range(args.epochs): model.train(input_fn=lambda: input_fn(tf.estimator.ModeKeys.TRAIN)) print(f"Epoch {epoch+1} completed.") # Start the training train()
위 코드에서는 데이터 세트 경로, 사전 훈련된 모델 경로, 출력 경로, 배치 크기 및 훈련할 에포크 수에 대한 명령줄 인수를 정의합니다. 그런 다음 사전 훈련된 GPT-2 모델을 로드하고 데이터세트에 대한 입력 함수를 정의합니다. 마지막으로 훈련 함수를 정의하고 훈련을 시작합니다.
LLM이 미세 조정되면 이를 사용하여 텍스트를 생성할 수 있습니다. 텍스트를 생성하려면 다음 단계를 따르세요.
import tensorflow as tf import numpy as np import os import json import random import time import argparse # Define the command-line arguments parser = argparse.ArgumentParser() parser.add_argument("--model_path", type=str, required=True, help="Path to the fine-tuned model") parser.add_argument("--length", type=int, default=100, help="Length of the generated text") parser.add_argument("--temperature", type=float, default=0.7, help="Temperature for text generation") args = parser.parse_args() # Load the fine-tuned model with open(os.path.join(args.model_path, "hparams.json"), "r") as f: hparams = json.load(f) model_fn = model_fn(hparams, tf.estimator.ModeKeys.PREDICT) model = tf.compat.v1.estimator.Estimator( model_fn=model_fn, model_dir=args.model_path, params=hparams ) # Define the generation function def generate_text(length, temperature): start_token = "<|startoftext|>" tokens = tokenizer.convert_tokens_to_ids([start_token]) token_length = len(tokens) while token_length < length: prediction_input = np.array(tokens[-hparams["n_ctx"]:]) output = list(model.predict(input_fn=lambda: [[prediction_input]]))[0]["logits"] logits = output[-1] / temperature logits = logits - np.max(logits) probs = np.exp(logits) / np.sum(np.exp(logits)) token = np.random.choice(range(hparams["n_vocab"]), p=probs) tokens.append(token) token_length += 1 output_text = tokenizer.convert_ids_to_tokens(tokens) output_text = "".join(output_text).replace("▁", " ") output_text = output_text.replace(start_token, "") return output_text # Generate text text = generate_text(args.length, args.temperature) print(text)
위 코드에서는 미세 조정된 모델 경로, 생성된 텍스트의 길이 및 텍스트 생성 온도에 대한 명령줄 인수를 정의합니다. 그런 다음 미세 조정된 모델을 로드하고 생성 함수를 정의합니다. 마지막으로 generate_text 함수를 사용하여 텍스트를 생성하고 출력을 인쇄하면 완료됩니다!
이 기사에서는 TensorFlow 및 GPT-2 아키텍처를 사용하여 단일 컴퓨터에서 LLM(대형 언어 모델)을 생성하는 방법을 배웠습니다. 우리는 TensorFlow를 설치하고 OpenAI GitHub 저장소에서 GPT-2 코드를 다운로드하는 것부터 시작했습니다. 그런 다음 데이터 세트에서 GPT-2 모델을 교육하고 동일한 데이터 세트를 사용하여 사전 교육된 GPT-2 모델을 미세 조정했습니다. 마지막으로 미세 조정된 LLM을 사용하여 텍스트를 생성했습니다.
이 문서의 단계를 따르면 자신만의 LLM을 만들고 언어 번역, 챗봇, 콘텐츠 생성과 같은 다양한 작업을 위한 텍스트를 생성할 수 있습니다.
여기에도 게시되었습니다.