24,876 okumalar
24,876 okumalar

Büyük Bir Dil Modelini Yerel Olarak Nasıl Barındırırsınız?

ile Thomas Cherickal6m2023/06/05
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Büyük Dil Modelleri (LLM'ler), doğal dili anlamak ve oluşturmak için tasarlanmış bir yapay zeka (AI) alt kümesidir. Yüksek Lisans'lar, sohbet robotlarından dil çeviri hizmetlerine kadar çeşitli uygulamaları geliştirmek için kullanılmıştır. Bu yazımızda tek bilgisayarda LLM nasıl oluşturulur konusunu ele alıp kaynak kod örnekleri vereceğiz.
featured image - Büyük Bir Dil Modelini Yerel Olarak Nasıl Barındırırsınız?
Thomas Cherickal HackerNoon profile picture
0-item
1-item
2-item


Büyük Dil Modelleri (LLM'ler), doğal dili anlamak ve oluşturmak için tasarlanmış bir yapay zeka (AI) alt kümesidir. Bu modeller çok miktarda metin verisi üzerinde eğitilir ve dildeki kalıpları öğrenmek için karmaşık algoritmalar kullanır. Yüksek Lisans'lar, sohbet robotlarından dil çeviri hizmetlerine kadar çeşitli uygulamaları geliştirmek için kullanılmıştır. Bu yazımızda tek bilgisayarda LLM nasıl oluşturulur konusunu ele alıp kaynak kod örnekleri vereceğiz.


Önkoşullar

Başlamadan önce bilgisayarınızın aşağıdaki gereksinimleri karşıladığından emin olmanız önemlidir:


  1. En az 16 GB RAM ve 1 TB ücretsiz depolama alanına sahip güçlü bir bilgisayar
  2. En az 8 GB video belleğine sahip, NVIDIA GeForce veya AMD Radeon gibi modern bir GPU
  3. Ubuntu veya CentOS gibi bir Linux işletim sistemi
  4. Komut satırı arayüzü (CLI) ve Python programlama dili hakkında temel bilgi

Adım 1: Anaconda'yı yükleyin

Anaconda, veri bilimi ve makine öğrenimi için popüler bir açık kaynaklı platformdur. Yüksek Lisans oluşturmak için kullanacağımız çeşitli araçları ve kütüphaneleri içerir. Anaconda'yı yüklemek için şu adımları izleyin:


  1. Anaconda yükleyicisini resmi web sitesinden indirin: https://www.anaconda.com/products/individual

  2. Terminali açın ve yükleyicinin indirildiği dizine gidin

  3. Aşağıdaki komutu yazarak yükleyiciyi çalıştırın: bash Anaconda3–2021.11-Linux-x86_ 64.sh

  4. Kurulumu tamamlamak için ekrandaki talimatları izleyin


2. Adım: Python ortamı oluşturun

LLM için gerekli kütüphaneleri ve bağımlılıkları kurmak için bir Python ortamı oluşturacağız. Bir ortam oluşturmak için şu adımları izleyin:


  1. Terminali açın ve aşağıdaki komutu yazın: conda create — name lm python=3.8

  2. Ortamı şunu yazarak etkinleştirin: conda active lm


3. Adım: TensorFlow'u yükleyin

TensorFlow, makine öğrenimi modelleri oluşturmaya ve eğitmeye yönelik açık kaynaklı bir platformdur. LLM'yi oluşturmak için TensorFlow'u kullanacağız. TensorFlow'u yüklemek için şu adımları izleyin:


  1. Terminale aşağıdaki komutu yazın: pip install tensorflow

  2. Python'a aktararak TensorFlow'un kurulu olduğunu doğrulayın: tensorflow'u tf olarak içe aktarın


Adım 4: Önceden eğitilmiş bir LLM indirin

Bir LLM'yi sıfırdan eğitmek, muazzam miktarda hesaplama gücü ve zaman gerektirir. Neyse ki, özel kullanım durumumuz için ince ayar yapabileceğimiz önceden eğitilmiş modeller mevcuttur. En popüler önceden eğitilmiş LLM'lerden biri GPT-2'dir (Generative Pre-trained Transformer 2). Önceden eğitilmiş GPT-2 modelini indirmek için şu adımları izleyin:


  1. Terminali açın ve aşağıdaki komutu yazın: git clone https://github.com/openai/gpt-2.git

  2. Şunu yazarak gpt-2 dizinine gidin: cd gpt-2

  3. Önceden eğitilmiş modeli şunu yazarak indirin: python download_ model.py 117M


Adım 5: Önceden eğitilmiş LLM'de ince ayarlar yapın

Önceden eğitilmiş bir LLM'nin ince ayarının yapılması, modelin belirli bir görev için belirli bir veri kümesi üzerinde eğitilmesini içerir. Örneğimizde, önceden eğitilmiş GPT-2 modeline bir metin oluşturma görevinde ince ayar yapacağız. Modele ince ayar yapmak için şu adımları izleyin:


  1. İnce ayarlı model için şunu yazarak yeni bir dizin oluşturun: mkdir my_model
  2. Şunu yazarak my_model dizinine gidin: cd my_model
  3. Şunu yazarak yeni bir Python dosyası oluşturun: touch train.py
  4. train.py dosyasını bir metin düzenleyicide açın ve aşağıdaki kodu yapıştırın:
 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()



Yukarıdaki kodda, veri kümesi yolu, önceden eğitilmiş model yolu, çıktı yolu, toplu iş boyutu ve eğitilecek dönem sayısı için komut satırı bağımsız değişkenlerini tanımlıyoruz. Daha sonra önceden eğitilmiş GPT-2 modelini yüklüyoruz ve veri seti için giriş fonksiyonunu tanımlıyoruz. Son olarak eğitim fonksiyonunu tanımlıyoruz ve eğitime başlıyoruz.


Adım 6: İnce ayarlı LLM'yi kullanarak metin oluşturun

LLM'de ince ayar yapıldıktan sonra onu metin oluşturmak için kullanabiliriz. Metin oluşturmak için şu adımları izleyin:


  1. Terminali açın ve şunu yazarak my_model dizinine gidin: cd my_model
  2. Şunu yazarak yeni bir Python dosyası oluşturun: touch created.py
  3. Generate.py dosyasını bir metin düzenleyicide açın ve aşağıdaki kodu yapıştırın:


 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)




Yukarıdaki kodda, ince ayarlı model yolu, oluşturulan metnin uzunluğu ve metin oluşturma sıcaklığı için komut satırı bağımsız değişkenlerini tanımlıyoruz. Daha sonra ince ayarlı modeli yüklüyoruz ve üretim fonksiyonunu tanımlıyoruz. Son olarak, created_text işlevini kullanarak metin oluşturuyoruz ve çıktıyı yazdırıyoruz ve işimiz bitti!


Çözüm

Bu yazımızda TensorFlow ve GPT-2 mimarisini kullanarak tek bir bilgisayarda Büyük Dil Modelinin (LLM) nasıl oluşturulacağını öğrendik. TensorFlow'u yükleyerek ve OpenAI GitHub deposundan GPT-2 kodunu indirerek başladık. Daha sonra bir veri kümesi üzerinde bir GPT-2 modelini eğittik ve aynı veri kümesini kullanarak önceden eğitilmiş GPT-2 modeline ince ayar yaptık. Son olarak, ince ayarlı LLM'yi kullanarak metin oluşturduk.


Bu makaledeki adımları takip ederek kendi LLM'nizi oluşturabilir ve dil çevirisi, sohbet robotları ve içerik üretimi gibi çeşitli görevler için metin oluşturabilirsiniz.


Bir sonraki nesil?


Referanslar

  1. Radford, A., Wu, J., Child, R., Luan, D., Amodei, D. ve Sutskever, I. (2019). Dil modelleri denetimsiz çoklu görev öğrenicileridir. OpenAI Blogu, 1(8), 9.
  2. OpenAI. (2019). GPT-2: Dil modelleri, denetlenmeyen çoklu görev öğrenicileridir. Github. https://github.com/openai/gpt-2 adresinden alındı.
  3. TensorFlow. (2021). TensorFlow: Herkes için açık kaynaklı bir makine öğrenimi çerçevesi. https://www.tensorflow.org/ adresinden alındı.
  4. Brown, TB, Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., … & Amodei, D. (2020). Dil modelleri az sayıda öğrenenlerdir. arXiv ön baskı arXiv:2005.14165.


Burada da yayınlandı.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks