Привязки Python для моделей трансформаторов, реализованных в C/C ++ с использованием библиотеки GGML.
Также см. Чатдокс
Модели | Тип модели | Куда | Металл |
---|---|---|---|
GPT-2 | gpt2 | ||
GPT-J, GPT4ALL-J | gptj | ||
GPT-neox, Stablelm | gpt_neox | ||
Сокол | falcon | ✅ | |
Лама, лама 2 | llama | ✅ | ✅ |
Мпт | mpt | ✅ | |
Starcoder, 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
Чтобы транслировать выход, установить 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" )
Если модель Repo имеет несколько модельных файлов ( .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 )
Вы можете использовать? Transformers Tokenizers:
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.
Он интегрирован в Лангхейн. См. Документы Лэнгкейна.
Чтобы запустить некоторые слои модели на 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. АПИ низкого уровня не полностью поддерживаются.
Параметр | Тип | Описание | По умолчанию |
---|---|---|---|
top_k | int | Значение Top-K для использования для отбора проб. | 40 |
top_p | float | Значение Top-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 | Количество слоев для запуска на графическом процессоре. | 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
: конкретная версия модели для использования. Это может быть имя филиала, имя тега или идентификатор коммита.hf
: Создать ли модель Transformers Transformers обнимающегося лица. Возвращает: объект 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 поддерживают Entgdidings.
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
: значение Top-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
: значение Top-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
: значение Top-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
Возвращает: сгенерированный текст.
Грань