paint-brush
대규모 언어 모델을 로컬로 호스팅하는 방법 ~에 의해@thomascherickal
24,876 판독값
24,876 판독값

대규모 언어 모델을 로컬로 호스팅하는 방법

~에 의해 Thomas Cherickal6 분 read2023/06/05
Read on Terminal Reader
Print this story
Read this story w/o Javascript

너무 오래; 읽다

LLM(대형 언어 모델)은 자연어를 이해하고 생성하도록 설계된 인공 지능(AI)의 하위 집합입니다. LLM은 챗봇부터 언어 번역 서비스까지 다양한 애플리케이션을 개발하는 데 사용되었습니다. 이 기사에서는 단일 컴퓨터에서 LLM을 생성하는 방법과 소스 코드 예제를 제공하는 방법에 대해 설명합니다.
featured image - 대규모 언어 모델을 로컬로 호스팅하는 방법
Thomas Cherickal HackerNoon profile picture
0-item
1-item
2-item


LLM(대형 언어 모델)은 자연어를 이해하고 생성하도록 설계된 인공 지능 (AI)의 하위 집합입니다. 이러한 모델은 방대한 양의 텍스트 데이터를 학습하고 복잡한 알고리즘을 사용하여 언어 패턴을 학습합니다. LLM은 챗봇부터 언어 번역 서비스까지 다양한 애플리케이션을 개발하는 데 사용되었습니다. 이 기사에서는 단일 컴퓨터에서 LLM을 생성하는 방법과 소스 코드 예제를 제공하는 방법에 대해 설명합니다.


전제 조건

시작하기 전에 컴퓨터가 다음 요구 사항을 충족하는지 확인하는 것이 중요합니다.


  1. 최소 16GB RAM과 1TB 무료 저장 공간을 갖춘 강력한 컴퓨터
  2. 최소 8GB의 비디오 메모리를 갖춘 NVIDIA GeForce 또는 AMD Radeon과 같은 최신 GPU
  3. Ubuntu 또는 CentOS와 같은 Linux 운영 체제
  4. 명령줄 인터페이스(CLI) 및 Python 프로그래밍 언어에 대한 기본 지식

1단계: 아나콘다 설치

Anaconda는 데이터 과학 및 기계 학습을 위한 인기 있는 오픈 소스 플랫폼입니다. 여기에는 LLM을 만드는 데 사용할 다양한 도구와 라이브러리가 포함되어 있습니다. Anaconda를 설치하려면 다음 단계를 따르세요.


  1. 공식 웹사이트( https://www.anaconda.com/products/individual )에서 Anaconda 설치 프로그램을 다운로드하세요.

  2. 터미널을 열고 설치 프로그램이 다운로드된 디렉터리로 이동합니다.

  3. 다음 명령을 입력하여 설치 프로그램을 실행합니다: bash Anaconda3–2021.11-Linux-x86_ 64.sh

  4. 화면의 지시에 따라 설치를 완료하세요.


2단계: Python 환경 만들기

LLM에 필요한 라이브러리와 종속성을 설치하기 위해 Python 환경을 만듭니다. 환경을 만들려면 다음 단계를 따르세요.


  1. 터미널을 열고 다음 명령을 입력합니다: conda create — name lm python=3.8

  2. conda activate lm을 입력하여 환경을 활성화하십시오.


3단계: TensorFlow 설치

TensorFlow는 머신러닝 모델을 구축하고 훈련하기 위한 오픈소스 플랫폼입니다. TensorFlow를 사용하여 LLM을 생성하겠습니다. TensorFlow를 설치하려면 다음 단계를 따르세요.


  1. 터미널에 다음 명령을 입력하세요: pip install tensorflow

  2. TensorFlow를 Python으로 가져와서 설치되어 있는지 확인합니다. tensorflow를 tf로 가져옵니다.


4단계: 사전 훈련된 LLM 다운로드

LLM을 처음부터 교육하려면 엄청난 양의 계산 능력과 시간이 필요합니다. 운 좋게도 특정 사용 사례에 맞게 미세 조정할 수 있는 사전 훈련된 모델을 사용할 수 있습니다. 가장 인기 있는 사전 훈련된 LLM 중 하나는 GPT-2(Generative Pre-trained Transformer 2)입니다. 사전 학습된 GPT-2 모델을 다운로드하려면 다음 단계를 따르세요.


  1. 터미널을 열고 다음 명령을 입력하십시오: git clone https://github.com/openai/gpt-2.git

  2. 다음을 입력하여 gpt-2 디렉터리로 이동합니다. cd gpt-2

  3. python download_model.py 117M을 입력하여 사전 훈련된 모델을 다운로드합니다.


5단계: 사전 훈련된 LLM 미세 조정

사전 훈련된 LLM을 미세 조정하려면 특정 작업에 대한 특정 데이터 세트에 대한 모델을 훈련하는 것이 포함됩니다. 이 예에서는 텍스트 생성 작업에 대해 사전 훈련된 GPT-2 모델을 미세 조정합니다. 모델을 미세 조정하려면 다음 단계를 따르세요.


  1. mkdir my_model을 입력하여 미세 조정된 모델을 위한 새 디렉터리를 만듭니다.
  2. 다음을 입력하여 my_model 디렉터리로 이동합니다. cd my_model
  3. 다음을 입력하여 새 Python 파일을 만듭니다. touch train.py
  4. 텍스트 편집기에서 train.py 파일을 열고 다음 코드를 붙여넣습니다.
 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 모델을 로드하고 데이터세트에 대한 입력 함수를 정의합니다. 마지막으로 훈련 함수를 정의하고 훈련을 시작합니다.


6단계: 미세 조정된 LLM을 사용하여 텍스트 생성

LLM이 미세 조정되면 이를 사용하여 텍스트를 생성할 수 있습니다. 텍스트를 생성하려면 다음 단계를 따르세요.


  1. 터미널을 열고 다음을 입력하여 my_model 디렉터리로 이동합니다. cd my_model
  2. touch generate.py를 입력하여 새 Python 파일을 만듭니다.
  3. 텍스트 편집기에서 generate.py 파일을 열고 다음 코드를 붙여넣습니다.


 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을 만들고 언어 번역, 챗봇, 콘텐츠 생성과 같은 다양한 작업을 위한 텍스트를 생성할 수 있습니다.


다음 세대?

다음 세대?


참고자료

  1. Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., & Sutskever, I. (2019). 언어 모델은 비지도 멀티태스킹 학습자입니다. OpenAI 블로그, 1(8), 9.
  2. 오픈AI. (2019). GPT-2: 언어 모델은 비지도 멀티태스킹 학습자입니다. Github. https://github.com/openai/gpt-2 에서 검색함.
  3. 텐서플로우. (2021). TensorFlow: 모두를 위한 오픈소스 머신러닝 프레임워크입니다. https://www.tensorflow.org/ 에서 검색함.
  4. Brown, TB, Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., … & Amodei, D. (2020). 언어 모델은 소수의 학습자입니다. arXiv 사전 인쇄 arXiv:2005.14165.


여기에도 게시되었습니다.