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 객체.
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 ]텍스트 또는 토큰 목록에 대한 임베딩을 계산합니다.
참고 : 현재 LLAMA 및 FALCON 모델 만 임베딩을 지원합니다.
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 : 점검 할 토큰. 반환 : 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