Целесообразность использования Falcon/Falcoder/Llama2 LLM при попытке использовать его на экземплярах AWS EC2 Inferentia 2.8xlarge и G4dn.8xLarge.

Можно ли сделать выводы на вышеупомянутых машинах, поскольку в Inf2 с моделью Falcon мы сталкиваемся со многими проблемами?

Контекст:

Мы столкнулись с проблемами при использовании Falcon/Falcoder на машине Inf2.8xl. Нам удалось успешно провести тот же эксперимент на экземпляре G5.8xl, но мы видим, что тот же код не работает на экземпляре машины Inf2. Мы знаем, что вместо графического процессора NVIDIA используется ускоритель. Поэтому мы опробовали возможности нейронного ядра и добавили необходимый вспомогательный код для использования этой возможности с помощью библиотеки torch-neuronx. Изменения кода и соответствующие скриншоты ошибок приведены ниже для справки:

Код без использования torch-neuronx. Фрагмент кода генерации:


Трассировка стека ошибок — без использования torch-neuronx

Код с использованием torch-neuronx — фрагмент кода вспомогательной функции:

      def generate_sample_inputs(tokenizer, sequence_length):
    dummy_input = "dummy"
    embeddings = tokenizer(dummy_input, max_length=sequence_length,     
                           padding="max_length",return_tensors="pt")
    return tuple(embeddings.values())


Трассировка стека с использованием torch-neuronx1

Трассировка стека с помощью torch-neuronx2

Может ли эта проблема с GitHub решить наши конкретные проблемы, упомянутые выше?

https://github.com/oobabooga/text-generation-webui/issues/2260

Итак, в основном мой запрос:

Возможно ли сделать вывод с помощью модели Llama 2/Falcon на экземплярах G4dn.8xLarge/ Inferentia 2.8xlarge или они еще не поддерживаются? Если нет, то какой экземпляр машины нам следует попробовать с точки зрения экономической эффективности?

**Код без использования torch-neuronx. Фрагмент кода генерации:**

      generation_output = model.generate(
input_ids = input_ids,
attention_mask = attention_mask,
generation_config = generation_config,
return_dict_in_generate = True,
output_scores = False,
max_new_tokens = max_new_tokens,
early_stopping = True
)
#print("generation_output")
#print(generation_output)
s = generation_output.sequences[0]
output = tokenizer.decode(s)

**Код с использованием torch-neuronx — фрагмент кода вспомогательной функции:**

      def generate_sample_inputs(tokenizer, sequence_length):
    dummy_input = "dummy"
    embeddings = tokenizer(dummy_input, max_length=sequence_length,  
                           padding="max_length",return_tensors="pt")
    return tuple(embeddings.values())
      def compile_model_inf2(model, tokenizer, sequence_length, num_neuron_cores):
    #use only one neuron core
    os.environ["NEURON_RT_NUM_CORES"] = str(num_neuron_cores)
    import torch_neuronx
    payload = generate_sample_inputs(tokenizer, sequence_length)
    return torch_neuronx.trace(model, payload)
      model = compile_model_inf2(model, tokenizer, sequence_length=512, num_neuron_cores=1)

Трассировки стека ошибок уже доступны.

0 ответов

Другие вопросы по тегам