🚀 Genji-python 6B
Genji-python 6Bは、Pythonコードの記述を支援するために訓練されたトランスフォーマーモデルです。このモデルを簡単に使用するには、Colabノートブックを参照してください。
🚀 クイックスタート
モデルの使用例や簡単な使い方については、以下のColabノートブックを確認できます。
Notebook
✨ 主な機能
Genjiは、EleutherAIのGPT - J 6Bモデルをファインチューニングしたトランスフォーマーモデルです。この特定のモデルは、約4GBのPythonコードのみで訓練されています。分割モデルはチェックポイントが分割されているため、ロード時にシステムRAMの使用量が少なく、ロードが速くなります。ただし、このモデルをセットアップするには、git - lfsをインストールしてリポジトリを取得する必要があり、手間がかかります。
📚 ドキュメント
モデルの説明
Genjiは、EleutherAIのGPT - J 6Bモデルをファインチューニングしたトランスフォーマーモデルです。この特定のモデルは、約4GBのPythonコードのみで訓練されています。分割モデルはチェックポイントが分割されているため、ロード時にシステムRAMの使用量が少なく、ロードが速くなります。ただし、このモデルをセットアップするには、git - lfsをインストールしてリポジトリを取得する必要があり、手間がかかります。
プロパティ |
詳細 |
n_parameters |
6,053,381,344 |
n_layers |
28* |
d_model |
4,096 |
d_ff |
16,384 |
n_heads |
16 |
d_head |
256 |
n_ctx |
2,048 |
n_vocab |
50,400 (GPT - 2/3と同じトークナイザー) |
位置エンコーディング |
Rotary position encodings (RoPE) |
RoPE次元 |
64 |
*
各レイヤーは、1つのフィードフォワードブロックと1つの自己注意ブロックで構成されています。
このモデルは28層で構成され、モデル次元は4096、フィードフォワード次元は16384です。モデル次元は16個のヘッドに分割され、各ヘッドの次元は256です。各ヘッドの64次元には、Rotary position encodings (RoPE) が適用されています。このモデルは、GPT - 2/GPT - 3と同じBPEセットを使用して、50257のトークン化語彙で訓練されています。
訓練データ
GPT - J 6Bは、EleutherAIがこのモデルの訓練を目的として作成した大規模な精選データセットであるPileで事前学習されました。事前学習後、Pileから取得したPythonコードでファインチューニングされました。
訓練手順
Genji - python - 6Bは、約6億5500万トークンで20,000ステップ訓練され、学習率は2e - 06です。
想定される用途
このモデルは、Pythonコードの記述を支援するために訓練されており、面白いことを試すのにも役立ちます。
📦 インストール
このモデルは、GPT - Jが主なtransformersリポジトリにマージされていないため、私たちのフォークでのみ使用可能です。マージされたら、このモデルを簡単にロードできるようにします。現時点では、以下のフォークを使用する必要があります。
Fork
pipでインストールするには:
pip install git+https://github.com/finetuneanon/transformers@gpt-neo-localattention3-rp-b
git - lfs もインストールする必要があります。Ubuntuでは:
apt install git-lfs
インストール後、git - lfsを初期化します:
git lfs install
次に、このリポジトリをクローンします:
git clone https://huggingface.co/NovelAI/genji-python-6B-split
💻 使用例
基本的な使用法
from transformers import (
AutoTokenizer,
AutoModelForCausalLM,
GPTNeoForCausalLM,
)
model = AutoModelForCausalLM.from_pretrained("genji-python-6B-split/model").half().eval().cuda()
tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-2.7B")
text = '''def print_customer_name'''
tokens = tokenizer(text, return_tensors="pt").input_ids
generated_tokens = model.generate(tokens.long().cuda(), use_cache=True, do_sample=True, top_k=50, temperature=0.3, top_p=0.9, repetition_penalty=1.125, min_length=1, max_length=len(tokens[0]) + 400, pad_token_id=tokenizer.eos_token_id)
last_tokens = generated_tokens[0][len(tokens[0]):]
generated_text = tokenizer.decode(last_tokens)
print("Generation:\n" + generated_text)
このコードを実行すると、以下のように生成されます:
Prompt:
def print_customer_name
Generation:
(self, customer):
"""Print the name of a customer."""
if not self.is_valid():
return
print("Customer: {}".format(customer))
使用例については、以下のColabノートブックも参照できます。
Notebook
📄 ライセンス
このモデルは、Apache 2.0ライセンスの下で提供されています。
謝辞
このプロジェクトは、TPU Research Cloud と EleutherAI が提供するコンピューティングリソースにより、GPT - J 6Bの事前学習が可能になりました。
このプロジェクトに貢献してくれた皆さんに感謝します。