GGMLライブラリを使用してC/C ++で実装されたトランスモデルのPythonバインディング。
Chatdocsも参照してください
モデル | モデルタイプ | cuda | 金属 |
---|---|---|---|
GPT-2 | gpt2 | ||
gpt-j、gpt4all-j | gptj | ||
GPT-Neox、Stablelm | gpt_neox | ||
ファルコン | falcon | ✅ | |
ラマ、ラマ2 | llama | ✅ | ✅ |
MPT | mpt | ✅ | |
スターコダー、スターチャット | gpt_bigcode | ✅ | |
ドリーV2 | dolly-v2 | ||
レプリット | replit |
pip install ctransformers
すべてのモデルに統一されたインターフェイスを提供します。
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM . from_pretrained ( "/path/to/ggml-model.bin" , model_type = "gpt2" )
print ( llm ( "AI is going to" ))
Google Colabで実行します
出力をストリーミングするには、 stream=True
を設定します:
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )
フェイスハブを直接抱きしめるモデルをロードできます。
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" )
モデルリポジトリに複数のモデルファイル( .bin
または.gguf
ファイル)がある場合、次のことを使用してモデルファイルを指定します。
llm = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , model_file = "ggml-model.bin" )
注:これは実験機能であり、将来的に変化する可能性があります。
で使用するには?トランス、モデルを作成し、トークネイザーを使用して:
from ctransformers import AutoModelForCausalLM , AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True )
tokenizer = AutoTokenizer . from_pretrained ( model )
Google Colabで実行します
使用できますか?トランステキスト生成パイプライン:
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = model , tokenizer = tokenizer )
print ( pipe ( "AI is going to" , max_new_tokens = 256 ))
使用できますか?変圧器の生成パラメーター:
pipe ( "AI is going to" , max_new_tokens = 256 , do_sample = True , temperature = 0.8 , repetition_penalty = 1.1 )
使用できますか?トランストークナー:
from ctransformers import AutoModelForCausalLM
from transformers import AutoTokenizer
model = AutoModelForCausalLM . from_pretrained ( "marella/gpt-2-ggml" , hf = True ) # Load model from GGML model repo.
tokenizer = AutoTokenizer . from_pretrained ( "gpt2" ) # Load tokenizer from original model repo.
Langchainに統合されています。 Langchain Docsを参照してください。
GPUでモデルレイヤーの一部を実行するには、 gpu_layers
パラメーターを設定します。
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GGML" , gpu_layers = 50 )
Google Colabで実行します
以下を使用してCUDAライブラリをインストールする
pip install ctransformers[cuda]
ROCMサポートを有効にするには、以下を使用してctransformers
パッケージをインストールします。
CT_HIPBLAS=1 pip install ctransformers --no-binary ctransformers
金属サポートを有効にするには、以下を使用してctransformers
パッケージをインストールします。
CT_METAL=1 pip install ctransformers --no-binary ctransformers
注:これは実験機能であり、exllamaを使用してラマモデルのみがサポートされています。
以下を使用して追加の依存関係をインストールする
pip install ctransformers[gptq]
以下を使用してGPTQモデルをロードします。
llm = AutoModelForCausalLM . from_pretrained ( "TheBloke/Llama-2-7B-GPTQ" )
Google Colabで実行します
モデル名またはパスに
gptq
単語が含まれていない場合は、model_type="gptq"
を指定します。
Langchainで使用することもできます。低レベルのAPIは完全にはサポートされていません。
パラメーター | タイプ | 説明 | デフォルト |
---|---|---|---|
top_k | int | サンプリングに使用するトップK値。 | 40 |
top_p | float | サンプリングに使用するトップP値。 | 0.95 |
temperature | float | サンプリングに使用する温度。 | 0.8 |
repetition_penalty | float | サンプリングに使用する繰り返しペナルティ。 | 1.1 |
last_n_tokens | int | 繰り返しペナルティに使用する最後のトークンの数。 | 64 |
seed | int | トークンのサンプリングに使用するシード値。 | -1 |
max_new_tokens | int | 生成する新しいトークンの最大数。 | 256 |
stop | List[str] | 遭遇したときに生成を停止するシーケンスのリスト。 | None |
stream | bool | 生成されたテキストをストリーミングするかどうか。 | False |
reset | bool | テキストを生成する前にモデル状態をリセットするかどうか。 | True |
batch_size | int | 単一のプロンプトでトークンを評価するために使用するバッチサイズ。 | 8 |
threads | int | トークンの評価に使用するスレッドの数。 | -1 |
context_length | int | 使用する最大コンテキスト長。 | -1 |
gpu_layers | int | GPUで実行するレイヤーの数。 | 0 |
注:現在、Llama、MPT、およびFalconモデルのみが
context_length
パラメーターをサポートしています。
AutoModelForCausalLM
AutoModelForCausalLM.from_pretrained
from_pretrained (
model_path_or_repo_id : str ,
model_type : Optional [ str ] = None ,
model_file : Optional [ str ] = None ,
config : Optional [ ctransformers . hub . AutoConfig ] = None ,
lib : Optional [ str ] = None ,
local_files_only : bool = False ,
revision : Optional [ str ] = None ,
hf : bool = False ,
** kwargs
) → LLM
ローカルファイルまたはリモートリポジトリから言語モデルをロードします。
args:
model_path_or_repo_id
:モデルファイルまたはディレクトリへのパス、または抱きしめるフェイスハブモデルリポジトリの名前。model_type
:モデルタイプ。model_file
:レポまたはディレクトリのモデルファイルの名前。config
: AutoConfig
オブジェクト。lib
:共有ライブラリまたはavx2
、 avx
、 basic
へのパス。local_files_only
:ローカルファイルのみを見るかどうか(つまり、モデルをダウンロードしようとしないでください)。revision
:使用する特定のモデルバージョン。ブランチ名、タグ名、またはコミットIDにすることができます。hf
:ハグするフェイストランスモデルを作成するかどうか。返品: LLM
オブジェクト。
LLM
LLM.__init__
__init__ (
model_path : str ,
model_type : Optional [ str ] = None ,
config : Optional [ ctransformers . llm . Config ] = None ,
lib : Optional [ str ] = None
)
ローカルファイルから言語モデルをロードします。
args:
model_path
:モデルファイルへのパス。model_type
:モデルタイプ。config
: Config
オブジェクト。lib
:共有ライブラリまたはavx2
、 avx
、 basic
へのパス。 シーケンスの始まりトークン。
構成オブジェクト。
モデルのコンテキスト長。
入力埋め込み。
シーケンスエンドトークン。
非正規化されたログ確率。
モデルファイルへのパス。
モデルタイプ。
パディングトークン。
語彙のトークンの数。
LLM.detokenize
detokenize ( tokens : Sequence [ int ], decode : bool = True ) → Union [ str , bytes ]
トークンのリストをテキストに変換します。
args:
tokens
:トークンのリスト。decode
:UTF-8文字列としてテキストをデコードするかどうか。返品:すべてのトークンの合計テキスト。
LLM.embed
embed (
input : Union [ str , Sequence [ int ]],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → List [ float ]
トークンのテキストまたはリストの埋め込みを計算します。
注:現在、ラマとファルコンモデルのみが埋め込みをサポートしています。
args:
input
:埋め込みを取得するためのトークンの入力テキストまたはリスト。batch_size
:単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8
threads
:トークンの評価に使用するスレッドの数。デフォルト: -1
返品:入力埋め込み。
LLM.eval
eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → None
トークンのリストを評価します。
args:
tokens
:評価するトークンのリスト。batch_size
:単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8
threads
:トークンの評価に使用するスレッドの数。デフォルト: -1
LLM.generate
generate (
tokens : Sequence [ int ],
top_k : Optional [ int ] = None ,
top_p : Optional [ float ] = None ,
temperature : Optional [ float ] = None ,
repetition_penalty : Optional [ float ] = None ,
last_n_tokens : Optional [ int ] = None ,
seed : Optional [ int ] = None ,
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None ,
reset : Optional [ bool ] = None
) → Generator [ int , NoneType , NoneType ]
トークンのリストから新しいトークンを生成します。
args:
tokens
:トークンを生成するトークンのリスト。top_k
:サンプリングに使用するTOP-K値。デフォルト: 40
top_p
:サンプリングに使用するトップP値。デフォルト: 0.95
temperature
:サンプリングに使用する温度。デフォルト: 0.8
repetition_penalty
:サンプリングに使用する繰り返しペナルティ。デフォルト: 1.1
last_n_tokens
:繰り返しペナルティに使用する最後のトークンの数。デフォルト: 64
seed
:サンプリングトークンに使用するシード値。デフォルト: -1
batch_size
:単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8
threads
:トークンの評価に使用するスレッドの数。デフォルト: -1
reset
:テキストを生成する前にモデル状態をリセットするかどうか。デフォルト: True
返品:生成されたトークン。
LLM.is_eos_token
is_eos_token ( token : int ) → bool
トークンがシーケンストークンであるかどうかを確認します。
args:
token
:チェックするトークン。返品:トークンがシーケンストークンである場合はTrue
他のFalse
。
LLM.prepare_inputs_for_generation
prepare_inputs_for_generation (
tokens : Sequence [ int ],
reset : Optional [ bool ] = None
) → Sequence [ int ]
過去に評価された入力トークンを削除し、LLMコンテキストを更新します。
args:
tokens
:入力トークンのリスト。reset
:テキストを生成する前にモデル状態をリセットするかどうか。デフォルト: True
返品:評価するトークンのリスト。
LLM.reset
reset () → None
0.2.27以来非難されました。
LLM.sample
sample (
top_k : Optional [ int ] = None ,
top_p : Optional [ float ] = None ,
temperature : Optional [ float ] = None ,
repetition_penalty : Optional [ float ] = None ,
last_n_tokens : Optional [ int ] = None ,
seed : Optional [ int ] = None
) → int
モデルからのトークンをサンプルします。
args:
top_k
:サンプリングに使用するTOP-K値。デフォルト: 40
top_p
:サンプリングに使用するトップP値。デフォルト: 0.95
temperature
:サンプリングに使用する温度。デフォルト: 0.8
repetition_penalty
:サンプリングに使用する繰り返しペナルティ。デフォルト: 1.1
last_n_tokens
:繰り返しペナルティに使用する最後のトークンの数。デフォルト: 64
seed
:サンプリングトークンに使用するシード値。デフォルト: -1
返品:サンプリングされたトークン。
LLM.tokenize
tokenize ( text : str , add_bos_token : Optional [ bool ] = None ) → List [ int ]
テキストをトークンのリストに変換します。
args:
text
:トークン化するテキスト。add_bos_token
:シーケンスの開始トークンを追加するかどうか。返品:トークンのリスト。
LLM.__call__
__call__ (
prompt : str ,
max_new_tokens : Optional [ int ] = None ,
top_k : Optional [ int ] = None ,
top_p : Optional [ float ] = None ,
temperature : Optional [ float ] = None ,
repetition_penalty : Optional [ float ] = None ,
last_n_tokens : Optional [ int ] = None ,
seed : Optional [ int ] = None ,
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None ,
stop : Optional [ Sequence [ str ]] = None ,
stream : Optional [ bool ] = None ,
reset : Optional [ bool ] = None
) → Union [ str , Generator [ str , NoneType , NoneType ]]
プロンプトからテキストを生成します。
args:
prompt
:テキストを生成するプロンプト。max_new_tokens
:生成する新しいトークンの最大数。デフォルト: 256
top_k
:サンプリングに使用するTOP-K値。デフォルト: 40
top_p
:サンプリングに使用するトップP値。デフォルト: 0.95
temperature
:サンプリングに使用する温度。デフォルト: 0.8
repetition_penalty
:サンプリングに使用する繰り返しペナルティ。デフォルト: 1.1
last_n_tokens
:繰り返しペナルティに使用する最後のトークンの数。デフォルト: 64
seed
:サンプリングトークンに使用するシード値。デフォルト: -1
batch_size
:単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8
threads
:トークンの評価に使用するスレッドの数。デフォルト: -1
stop
:遭遇したときに生成を停止するシーケンスのリスト。デフォルト: None
stream
:生成されたテキストをストリーミングするかどうか。デフォルト: False
reset
:テキストを生成する前にモデル状態をリセットするかどうか。デフォルト: True
返品:生成されたテキスト。
mit