Строительные блоки Python для изучения больших языковых моделей всего за 512 МБ ОЗУ

Этот пакет делает использование больших языковых моделей из Python максимально простым. Все выводы выполняются локально, чтобы по умолчанию ваши данные были частными.
Этот пакет может быть установлен с помощью следующей команды:
pip install languagemodelsПосле установки вы сможете взаимодействовать с пакетом в Python следующим образом:
> >> import languagemodels as lm
> >> lm . do ( "What color is the sky?" )
'The color of the sky is blue.'Это потребует загрузки значительного объема данных (~ 250 МБ) в первом заезде. Модели будут кэшированы для последующего использования, а последующие вызовы должны быть быстрыми.
Вот несколько примеров использования в виде сеансов Python Repl. Это должно работать в реплике, ноутбуках или в традиционных сценариях и приложениях.
> >> import languagemodels as lm
> >> lm . do ( "Translate to English: Hola, mundo!" )
'Hello, world!'
> >> lm . do ( "What is the capital of France?" )
'Paris.'Выходы могут быть ограничены списком вариантов при желании:
> >> lm . do ( "Is Mars larger than Saturn?" , choices = [ "Yes" , "No" ])
'No'Базовая модель должна работать быстро по любой системе с 512 МБ памяти, но этот предел памяти может быть увеличен, чтобы выбрать более мощные модели, которые будут потреблять больше ресурсов. Вот пример:
> >> import languagemodels as lm
> >> lm . do ( "If I have 7 apples then eat 5, how many apples do I have?" )
'You have 8 apples.'
> >> lm . config [ "max_ram" ] = "4gb"
4.0
> >> lm . do ( "If I have 7 apples then eat 5, how many apples do I have?" )
'I have 2 apples left.'Если у вас есть GPU NVIDIA с доступным CUDA, вы можете выбрать GPU для вывода:
> >> import languagemodels as lm
> >> lm . config [ "device" ] = "auto" > >> import languagemodels as lm
> >> lm . complete ( "She hid in her room until" )
'she was sure she was safe'Помощные функции предоставляются для извлечения текста из внешних источников, которые можно использовать для увеличения контекста быстрого приглашения.
> >> import languagemodels as lm
> >> lm . get_wiki ( 'Chemistry' )
' Chemistry is the scientific study ...
>> > lm . get_weather ( 41.8 , - 87.6 )
' Partly cloudy with a chance of rain ...
>> > lm . get_date ()
'Friday, May 12, 2023 at 09:27AM'Вот пример, показывающий, как это можно использовать (по сравнению с предыдущим примером чата):
> >> lm . do ( f"It is { lm . get_date () } . What time is it?" )
'The time is 12:53PM.'Поиск семантического поиска предоставляется для получения документов, которые могут предоставить полезный контекст из магазина документов.
> >> import languagemodels as lm
> >> lm . store_doc ( lm . get_wiki ( "Python" ), "Python" )
> >> lm . store_doc ( lm . get_wiki ( "C language" ), "C" )
> >> lm . store_doc ( lm . get_wiki ( "Javascript" ), "Javascript" )
> >> lm . get_doc_context ( "What does it mean for batteries to be included in a language?" )
' From Python document : It is often described as a "batteries included" language due to its comprehensive standard library . Guido van Rossum began working on Python in the late 1980 s as a successor to the ABC programming language and first released it in 1991 as Python 0.9 .
From C document : It was designed to be compiled to provide low - level access to memory and language constructs that map efficiently to machine instructions , all with minimal runtime support .'Полная документация
Этот пакет в настоящее время превосходит обнимание transformers лица для вывода процессора благодаря квантизации Int8 и бэкэнд Ctranslate2. В следующей таблице сравниваются производительность вывода процессора на идентичных моделях с использованием наилучшего доступного квантования на 20 вопросов.
| Бэкэнд | Время вывода | Память используется |
|---|---|---|
| Обнимая трансформеры лица | 22 с | 1,77 ГБ |
| Этот пакет | 11 с | 0,34 ГБ |
Обратите внимание, что квантование технически наносит технически качество выхода немного, но на этом уровне он должен быть незначительным.
Разумные модели по умолчанию предоставляются. Пакет должен со временем улучшаться по мере того, как более сильные модели становятся доступными. Используемые базовые модели в 1000 раз меньше, чем самые большие модели, используемые сегодня. Они полезны в качестве инструментов обучения, но работают намного ниже текущего состояния искусства.
Вот текущие модели по умолчанию, используемые пакетом для поставленного значения max_ram :
| max_ram | Название модели | Параметры (б) |
|---|---|---|
| 0,5 | Lamini-Flan-T5-248M | 0,248 |
| 1.0 | Lamini-Flan-T5-783M | 0,783 |
| 2.0 | Lamini-Flan-T5-783M | 0,783 |
| 4.0 | Flan-Alpaca-Gpt4-xl | 3.0 |
| 8.0 | OpenChat-3.5-0106 | 7.0 |
Для завершения кода используется серия моделей Codet5+.
Этот пакет лицензирован для коммерческого использования, но используемые модели могут быть не совместимы с коммерческим использованием. Чтобы коммерчески использовать этот пакет, вы можете фильтровать модели по типу лицензии, используя функцию require_model_license .
> >> import languagemodels as lm
> >> lm . config [ 'instruct_model' ]
'LaMini-Flan-T5-248M-ct2-int8'
> >> lm . require_model_license ( "apache|bsd|mit" )
> >> lm . config [ 'instruct_model' ]
'flan-t5-base-ct2-int8'Рекомендуется подтвердить, что используемые модели соответствуют требованиям к лицензированию для вашего программного обеспечения.
Одна из целей для этого пакета - стать простым инструментом для учащихся и преподавателей, изучающих, как крупные языковые модели пересекаются с современной разработкой программного обеспечения. Его можно использовать для тяжелой работы для ряда учебных проектов:
Несколько примеров программ и ноутбуков включены в каталог examples .