GPT-2 124M、345M、774M、および1.5Bトランスモデルの使いやすいラッパー
それは何ですか•インストール•開始
Rishabh Anandによって作られました•https://rish-16.github.io
GPT-2は、テキスト生成のためにOpenAIによって開発された自然言語処理モデルです。これは、インターネットから40GBのテキストでトレーニングされたGPT(生成事前訓練のトランス)モデルの後継です。 2017年には注目を集めた変圧器モデルは、2017年に紙が必要なすべてです。モデルには、 124M
、 345M
、 774M
、および1558M
の4つのバージョンがあります。
1.5Bモデルは現在、OpenAIがリリースした最大の利用可能なモデルです。
最後に、 gpt2-client
、同じ機能を備えているが、よりアクセス可能性、理解度、および実用性を備えた元のgpt-2
リポジトリの周りのラッパーです。 5行未満のコードで4つのGPT-2モデルすべてを使用して遊ぶことができます。
*注:このクライアントラッパーは、直接的または間接的に引き起こされた損害について決して責任を負いません。モデルによって参照される名前、場所、およびオブジェクトは架空のものであり、実際の実体や組織に似ていません。サンプルはフィルター処理されておらず、攻撃的なコンテンツが含まれている場合があります。アドバイスされたユーザーの裁量。*
pip
経由でクライアントをインストールします。理想的には、 gpt2-client
はPython> = 3.5およびTensorflow> = 1.xでよくサポートされています。 Python 2.xを使用する場合、一部のライブラリは、 pip
を介して--upgrade
フラグを使用して再インストールまたはアップグレードする必要があります。
pip install gpt2-client
注:
gpt2-client
Tensorflow 2.0と互換性がありません。TensorFlow1.14.0をお試しください
1.モデルの重みとチェックポイントをダウンロードします
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`. Rename `save_dir` to anything.
gpt2 . load_model ( force_download = False ) # Use cached versions if available.
これにより、現在の作業ディレクトリにmodels
と呼ばれるディレクトリが作成され、モデルが必要とする重み、チェックポイント、モデルJSON、およびハイパーパラメーターをダウンロードします。 load_model()
関数を呼び出すと、ファイルがmodels
ディレクトリでダウンロードが終了したと仮定して、再度呼び出す必要はありません。
注: set
force_download=True
既存のキャッシュモデルの重みとチェックポイントを上書きする
2。テキストの生成を開始します!
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
gpt2 . generate ( interactive = True ) # Asks user for prompt
gpt2 . generate ( n_samples = 4 ) # Generates 4 pieces of text
text = gpt2 . generate ( return_text = True ) # Generates text and returns it in an array
gpt2 . generate ( interactive = True , n_samples = 3 ) # A different prompt each time
前述のサンプルから、生成オプションが非常に柔軟であることがわかります。生成する必要があるテキストの種類に基づいて、複数のチャンクであれ、プロンプトを使用して一度に1つずつ混合して一致させることができます。
3。プロンプトのバッチからテキストを生成します
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
prompts = [
"This is a prompt 1" ,
"This is a prompt 2" ,
"This is a prompt 3" ,
"This is a prompt 4"
]
text = gpt2 . generate_batch_from_prompts ( prompts ) # returns an array of generated text
4.カスタムデータセットへのGPT-2を微調整します
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
my_corpus = './data/shakespeare.txt' # path to corpus
custom_text = gpt2 . finetune ( my_corpus , return_text = True ) # Load your custom dataset
GPT-2をカスタムコーパスまたはデータセットに微調整するには、GPUまたはTPUを手元に置くことが理想的です。 Google Colabは、カスタムモデルを再訓練/微調整するために利用できるツールの1つです。
5。テキストシーケンスのエンコードとデコード
from gpt2_client import GPT2Client
gpt2 = GPT2Client ( '124M' ) # This could also be `355M`, `774M`, or `1558M`
gpt2 . load_model ()
# encoding a sentence
encs = gpt2 . encode_seq ( "Hello world, this is a sentence" )
# [15496, 995, 11, 428, 318, 257, 6827]
# decoding an encoded sequence
decs = gpt2 . decode_seq ( encs )
# Hello world, this is a sentence
提案、改善、および強化はいつでも大歓迎です!問題がある場合は、問題のセクションでそれを提起してください。改善がある場合は、PRを作成する前に提案を議論するために問題を提出してください。
どんなにとんでもないことに関係なく、すべてのアイデアが歓迎されます!
オープンソースは本当に楽しいです。あなたの寄付は、私が新鮮なアイデアを生き返らせるように動機付けます。私のオープンソースの努力をサポートすることに興味があるなら、寄付をしてください - それは私にとって大きな意味があります!
mit