Сделайте вместимым любой LLM для любого GPU, используя 10 строк кода

Расширьте возможности любого LLM для любого GPU всего за 10 строк кода

Genius-путь запуска моделей, больших, чем объем VRAM GPU. Это может быть медленно, но оно срабатывает!

Кто имеет достаточно денег, чтобы потратить на GPU с более чем 24 гигабайтами VRAM? Особенно когда мы просто хотим протестировать его, проехаться на нем и поиграть с ним, запустив его локально! Мы – самоделкины! И не было практического способа запускать большие модели на локальной машине!

Поместите эту модель на эту GPU

Хитрость

Кто сказал, что вы должны загружать и обрабатывать все 96 слоев GPT3, как большие модели языка, сразу? AirLLM придумал гениальный способ обработки слоев раздельно и переноса вычислений через каждый слой по одному – Это означает, что для модели с числом параметров 70 млрд бутылочным горлышком для памяти является самый большой слой с 4096 параметрами или 16384. Это довольно простое число для вычисления в небольшом объеме памяти, а затем сохранения выходных данных одного слоя и использования их для расчета следующего! Делайте это снова и снова во время прямого и обратного распространения.

Окей, так что быстро, вот как выглядит код

pip install airllm# альтернативный способ установки # pip install -i https://pypi.org/simple/ airllm

Настройте движок вывода при помощи airllm

# Для запуска LLaMA-2 из airllm импортируем AirLLMLlama2 # Для запуска Qwen из airllm импортируем AirLLMQWen# Для запуска ChatGLM из airllm импортируем AirLLMChatGLM

Загрузите модель

# Если вы используете huggingface для gated моделей, то вы получите ошибку 401# Запустите следующий код для использования вашего токена Huggingfacemodel = AirLLMLlama2("meta-llama/Llama-2-7b-hf", hf_token='ВАШ ТОКЕН HUGGINGFFACE ЗДЕСЬ')

Запустите вывод

# Максимальная длина генерируемых токенов MAX_LENGTH = 128# Список входных текстов input_text = [        'What is the capital of Zambia?',        #'Is Elon Musk Narcissistic?',    ]input_tokens = model.tokenizer(input_text,    return_tensors="pt",     return_attention_mask=False,     truncation=True,     max_length=MAX_LENGTH,     padding=True)           generation_output = model.generate(    input_tokens['input_ids'].cuda(),     max_new_tokens=20,    use_cache=True,    return_dict_in_generate=True)#…