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オブジェクト。
LLMLLM.__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 :単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8threads :トークンの評価に使用するスレッドの数。デフォルト: -1返品:入力埋め込み。
LLM.eval eval (
tokens : Sequence [ int ],
batch_size : Optional [ int ] = None ,
threads : Optional [ int ] = None
) → Noneトークンのリストを評価します。
args:
tokens :評価するトークンのリスト。batch_size :単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8threads :トークンの評価に使用するスレッドの数。デフォルト: -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値。デフォルト: 40top_p :サンプリングに使用するトップP値。デフォルト: 0.95temperature :サンプリングに使用する温度。デフォルト: 0.8repetition_penalty :サンプリングに使用する繰り返しペナルティ。デフォルト: 1.1last_n_tokens :繰り返しペナルティに使用する最後のトークンの数。デフォルト: 64seed :サンプリングトークンに使用するシード値。デフォルト: -1batch_size :単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8threads :トークンの評価に使用するスレッドの数。デフォルト: -1reset :テキストを生成する前にモデル状態をリセットするかどうか。デフォルト: 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 () → None0.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値。デフォルト: 40top_p :サンプリングに使用するトップP値。デフォルト: 0.95temperature :サンプリングに使用する温度。デフォルト: 0.8repetition_penalty :サンプリングに使用する繰り返しペナルティ。デフォルト: 1.1last_n_tokens :繰り返しペナルティに使用する最後のトークンの数。デフォルト: 64seed :サンプリングトークンに使用するシード値。デフォルト: -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 :生成する新しいトークンの最大数。デフォルト: 256top_k :サンプリングに使用するTOP-K値。デフォルト: 40top_p :サンプリングに使用するトップP値。デフォルト: 0.95temperature :サンプリングに使用する温度。デフォルト: 0.8repetition_penalty :サンプリングに使用する繰り返しペナルティ。デフォルト: 1.1last_n_tokens :繰り返しペナルティに使用する最後のトークンの数。デフォルト: 64seed :サンプリングトークンに使用するシード値。デフォルト: -1batch_size :単一のプロンプトでトークンを評価するために使用するバッチサイズ。デフォルト: 8threads :トークンの評価に使用するスレッドの数。デフォルト: -1stop :遭遇したときに生成を停止するシーケンスのリスト。デフォルト: Nonestream :生成されたテキストをストリーミングするかどうか。デフォルト: Falsereset :テキストを生成する前にモデル状態をリセットするかどうか。デフォルト: True返品:生成されたテキスト。
mit