миллиардов весов (17/24 гб vram занимает на карте) квантизованная до 8 бит
Задача - генерация java кода
Мне нужне ее дообучить правильно ставить аннотации в джава коде
У меня есть инструкционный датасет на 130 строк с 2мя колонками ( инпут - (запрос на енглийском), аутпут(java code))
Так как данных мало и мощностей мало, я нашел ток 2 варианта PEFT LORA fine-tuning или тупо зпморозить все слои кроме последнего
Карта 3090 TI 24 gb
С PEFT LORA fine-tuning все прошло гладко, но результата не дало
Решил перейти ко второму варианту но не уверен что далею верно
Морожу так
for name, param in model.named_parameters():
if "39" not in name.split("."):
param.requires_grad = False
Тркнирую с такима аргументами
training_args = transformers.TrainingArguments( #per_device_train_batch_size * gradient_accumulation_steps = batch_size???
per_device_train_batch_size=1, gradient_accumulation_steps = 40,
learning_rate=2e-4, optim="paged_adamw_8bit",
save_total_limit=1, logging_steps=1,
output_dir=OUTPUT_DIR, max_steps=8,
lr_scheduler_type="cosine",
warmup_ratio=0.05, report_to = "tensorboard",
gradient_checkpointing=True, bf16=True,# fp16=True, bf16=True, tf32=True
evaluation_strategy='steps', eval_steps=1
)
Буду рад замечаниям и предложениям)
Вопрос в том верно ли я все делаю и правильно ли выбрал подход
С кучей заморозки, max_steps=8, таким малым датасетом, квантинизацией и еще и трейном в 8bit я бы сказал счастье что модель не деграднула..
Обсуждают сегодня