GGML 라이브러리를 사용하여 C/C ++에서 구현 된 변압기 모델에 대한 파이썬 바인딩.
또한 chatdocs를 참조하십시오
모델 | 모델 유형 | 쿠다 | 금속 |
---|---|---|---|
GPT-2 | gpt2 | ||
GPT-J, GPT4ALL-J | gptj | ||
GPT-Neox, Stablelm | gpt_neox | ||
매 | falcon | ✅ | |
라마, 라마 2 | llama | ✅ | ✅ |
MPT | mpt | ✅ | |
스타 코더, Starchat | 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에서 실행하십시오
출력을 스트리밍하려면 set stream=True
:
for text in llm ( "AI is going to" , stream = True ):
print ( text , end = "" , flush = True )
Face Hub를 직접 포옹하는 모델을로드 할 수 있습니다.
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 문서를 참조하십시오.
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
참고 : 이것은 실험적인 기능이며 Llama 모델 만 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 | 샘플링에 사용할 최상위 값. | 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
로컬 파일 또는 원격 Repo에서 언어 모델을로드합니다.
Args :
model_path_or_repo_id
: 모델 파일 또는 디렉토리의 경로 또는 Hugging Face Hub Model Repo의 이름.model_type
: 모델 유형.model_file
: Repo 또는 Directory의 모델 파일의 이름입니다.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 ]
텍스트 또는 토큰 목록에 대한 임베딩을 계산합니다.
참고 : 현재 LLAMA 및 FALCON 모델 만 임베딩을 지원합니다.
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
: 점검 할 토큰. 반환 : 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