Я пытаюсь выполнить только вывод с большой моделью размером 70 бит с несколькими графическими процессорами, но столкнулся с некоторыми проблемами.
< ol>
[*]Время загрузки занимает очень много времени, около 15 минут.
[*]Я не уверен, что это работает правильно, чтобы автоматически сегментировать модель через несколько графических процессоров и выполнять свою работу. в пакетном режиме. В настоящее время он сохраняет ошибки с такими сообщениями. Думаю, если бы все работало хорошо, использование только четырех графических процессоров с моделью такого размера должно было бы работать правильно.
[rank4]: torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 448.00 MiB. GPU 0 has a total capacity of 47.51 GiB of which 319.56 MiB is free. Including non-PyTorch memory, this process has 24.97 GiB memory in use. Process 1068220 has 22.22 GiB memory in use. Of the allocated memory 24.55 GiB is allocated by PyTorch, and 1.56 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/c ... -variables)
Есть ли предложения по исправлению моего кода?
p.s. Также интересно, какие подсказки будут хорошими для моделей инструкций? Я знаю, что существует множество методов быстрого проектирования, но мне просто интересно, как правильно контролировать качество вывода для модели Llama-Instruction.
import os
import torch
import pandas as pd
from tqdm import tqdm
from transformers import AutoTokenizer, AutoModelForCausalLM
os.environ["HF_HOME"] = "/mystorage"
os.environ["CUDA_VISIBLE_DEVICES"] = "3,4,5,6,7"
MODEL_ID = "meta-llama/Meta-Llama-3-70B-Instruct"
CSV_FILE = "my_csv.csv"
COLUMN_NAME = "column1"
ADDITIONAL_COLUMNS = ["column2"]
OUTPUT_FILE = "output.csv"
BATCH_SIZE = 32
print("Loading model...")
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, padding_side="left")
tokenizer.pad_token_id = tokenizer.eos_token_id
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
device_map="auto",
torch_dtype=torch.float16,
)
print("Loading data...")
data = pd.read_csv(CSV_FILE)
cells = data[COLUMN_NAME].dropna().tolist()
additional_data = data[ADDITIONAL_COLUMNS].loc[data[COLUMN_NAME].notna()]
PROMPTS = [
f"myprompt {cell}\n Given this cell, summarize in one sentence concisely."
for cell in cells
]
results = []
print("Starting inference...")
progress_bar = tqdm(total=len(PROMPTS))
for i in range(0, len(PROMPTS), BATCH_SIZE):
batch_prompts = PROMPTS[i:i + BATCH_SIZE]
inputs = tokenizer(batch_prompts, return_tensors="pt", padding=True, truncation=True).to("cuda")
with torch.no_grad():
output_ids = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
max_new_tokens=40,
pad_token_id=tokenizer.eos_token_id,
)
decoded_outputs = [
tokenizer.decode(output, skip_special_tokens=True).split(prompt)[-1].strip()
for output, prompt in zip(output_ids, batch_prompts)
]
results.extend(zip(batch_prompts, decoded_outputs))
progress_bar.update(len(batch_prompts))
print("Saving results...")
result_df = pd.DataFrame(results, columns=["Prompt", "Result"])
result_df = pd.concat([result_df, additional_data.reset_index(drop=True)], axis=1)
result_df.to_csv(OUTPUT_FILE, index=False)
print(f"Results saved to '{OUTPUT_FILE}'")
Подробнее здесь: https://stackoverflow.com/questions/792 ... ffeciently
Как эффективно запустить модель вывода большого размера в многопроцессорном процессоре? ⇐ Python
Программы на Python
1732498210
Anonymous
Я пытаюсь выполнить только [b]вывод[/b] с [b]большой моделью размером 70 бит с несколькими графическими процессорами[/b], но столкнулся с некоторыми проблемами.
< ol>
[*]Время загрузки занимает очень много времени, около 15 минут.
[*]Я не уверен, что это работает правильно, чтобы автоматически сегментировать модель через несколько графических процессоров и выполнять свою работу. в пакетном режиме. В настоящее время он сохраняет ошибки с такими сообщениями. Думаю, если бы все работало хорошо, использование только четырех графических процессоров с моделью такого размера должно было бы работать правильно.
[rank4]: torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 448.00 MiB. GPU 0 has a total capacity of 47.51 GiB of which 319.56 MiB is free. Including non-PyTorch memory, this process has 24.97 GiB memory in use. Process 1068220 has 22.22 GiB memory in use. Of the allocated memory 24.55 GiB is allocated by PyTorch, and 1.56 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)
Есть ли предложения по исправлению моего кода?
p.s. Также интересно, какие подсказки будут хорошими для моделей инструкций? Я знаю, что существует множество методов быстрого проектирования, но мне просто интересно, [b]как правильно контролировать качество вывода[/b] для модели Llama-Instruction.
import os
import torch
import pandas as pd
from tqdm import tqdm
from transformers import AutoTokenizer, AutoModelForCausalLM
os.environ["HF_HOME"] = "/mystorage"
os.environ["CUDA_VISIBLE_DEVICES"] = "3,4,5,6,7"
MODEL_ID = "meta-llama/Meta-Llama-3-70B-Instruct"
CSV_FILE = "my_csv.csv"
COLUMN_NAME = "column1"
ADDITIONAL_COLUMNS = ["column2"]
OUTPUT_FILE = "output.csv"
BATCH_SIZE = 32
print("Loading model...")
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, padding_side="left")
tokenizer.pad_token_id = tokenizer.eos_token_id
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
device_map="auto",
torch_dtype=torch.float16,
)
print("Loading data...")
data = pd.read_csv(CSV_FILE)
cells = data[COLUMN_NAME].dropna().tolist()
additional_data = data[ADDITIONAL_COLUMNS].loc[data[COLUMN_NAME].notna()]
PROMPTS = [
f"myprompt {cell}\n Given this cell, summarize in one sentence concisely."
for cell in cells
]
results = []
print("Starting inference...")
progress_bar = tqdm(total=len(PROMPTS))
for i in range(0, len(PROMPTS), BATCH_SIZE):
batch_prompts = PROMPTS[i:i + BATCH_SIZE]
inputs = tokenizer(batch_prompts, return_tensors="pt", padding=True, truncation=True).to("cuda")
with torch.no_grad():
output_ids = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
max_new_tokens=40,
pad_token_id=tokenizer.eos_token_id,
)
decoded_outputs = [
tokenizer.decode(output, skip_special_tokens=True).split(prompt)[-1].strip()
for output, prompt in zip(output_ids, batch_prompts)
]
results.extend(zip(batch_prompts, decoded_outputs))
progress_bar.update(len(batch_prompts))
print("Saving results...")
result_df = pd.DataFrame(results, columns=["Prompt", "Result"])
result_df = pd.concat([result_df, additional_data.reset_index(drop=True)], axis=1)
result_df.to_csv(OUTPUT_FILE, index=False)
print(f"Results saved to '{OUTPUT_FILE}'")
Подробнее здесь: [url]https://stackoverflow.com/questions/79221388/how-to-run-inference-large-size-model-in-multi-gpu-effeciently[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия