4-битное квантование и Multi-GPU
TLDR
TII’s Falcon 180B выпущен для HuggingFace (открытый доступ для исследований и коммерческого использования, предварительно обученная модель работает лучше, чем Llama2–70b, поэтому интересно посмотреть на производительность после тонкой настройки). Для загрузки с 4-битным квантованием требуется 2 80 ГБ A100 (больше требований к оборудованию, здесь мы используем Azure Standard_NC48ads_A100_v4). Время вывода в 10+ раз медленнее, чем у llama-2–13b (производительность/стоимость могут быть проблемой при внедрении на предприятии).
Для загрузки модели требуется около 95 ГБ памяти графического процессора. Поэтому вам нужны 2 А100 по 80ГБ. Для загрузки модели, кроме библиотек pytorch, transfomers, нужны bitsandbytes, accelerate. Сначала вам необходимо дать согласие, чтобы получить доступ к модели. Ниже приведен код вывода:
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, pipeline import torch model_name = "tiiuae/falcon-180B-chat" tokenizer = AutoTokenizer.from_pretrained(model_name) # use 4bit quantization bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.float16 ) model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=bnb_config, trust_remote_code=True, # use accelerate to spread model across multiple GPUs device_map="auto", torch_dtype=torch.float16, ) model.config.use_cache = False pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, torch_dtype=torch.float16, device_map="auto") sequences = pipe( 'I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?\n', do_sample=True, top_k=10, temperature=0.5, num_return_sequences=1, top_p=0.9, eos_token_id=tokenizer.eos_token_id, max_new_tokens=50, ) for seq in sequences: print(f"Result: {seq['generated_text']}")
Также сообщество квантовало модель с помощью GPTQ, например. TheBloke/Falcon-180B-Chat-GPTQ. С этой моделью вам не нужно явно использовать 4bit для ее загрузки. Однако нужны трансформеры 4.33, оптимум и установлен авто-gptq. Ниже приведен код (вы можете видеть, что нам не нужно явно использовать BitsAndBytesConfig для 4-битной версии, вывод выполняется немного быстрее, чем в приведенной выше версии):
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline model_name = "TheBloke/Falcon-180B-Chat-GPTQ" # To use a different branch, change revision # For example: revision="gptq-3bit-128g-actorder_True" model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", revision="main") tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True) prompt = "Tell me about AI" prompt_template=f'''User: {prompt} Assistant: ''' pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=50, temperature=0.7, do_sample=True, top_p=0.95, repetition_penalty=1.15, device_map="auto" ) print(pipe(prompt_template)[0]['generated_text'])
Приложение
Сокол 180Б
Лучшие возможности графического процессора от облачных провайдеров
Максимальный объем памяти графического процессора в Azure составляет 320 ГБ, а на AWS, GCP — 640 ГБ.