Arbeiten mit Llama 3.2 Vision Multimodal zur Objekterkennung mit Roboflow

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Arbeiten mit Llama 3.2 Vision Multimodal zur Objekterkennung mit Roboflow

by Guest » 03 Jan 2025, 09:46

Ich arbeite also an einem Projekt, bei dem ich einen von Roboflow heruntergeladenen Datensatz im Yolo-Format verwende und dann versuche, den Trainingsordner an Llama 3.2 zu übergeben, um diesen Datensatz von den Umarmungsgesichtstransformatoren überwacht zu lernen, aber das Problem ist dass es beim Training anfängt, aber meistens von selbst ohne Fehler stoppt.
Ich habe verschiedene Methoden zur Feinabstimmung ausprobiert, aber keine davon hat funktioniert.
Ich habe auch einen Ausschnitt meiner Feinabstimmungsmethode für Llama geteilt und derzeit kommt es während des Trainings immer wieder zu Fehlern.
Ich möchte auch klarstellen, dass ich sie verwende eine RTX 4090 mit 64 GB RAM und einem I9-14900k.
Und unten ist das Format für meinen Roboflow-Datensatz:
Yolov8-Format für Datensatz

Code: Select all

def train_llama(images, descriptions):
print("Initializing model and processor...")
model_id = "meta-llama/Llama-Guard-3-11B-Vision"

# Initialize processor
processor = AutoProcessor.from_pretrained(model_id)

# Initialize model
model = AutoModelForImageTextToText.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="cuda"
)
model.config.use_cache = False

print("Creating dataset...")
dataset = CustomImageTextDataset(images, descriptions, processor)

# Split dataset
train_size = int(0.9 * len(dataset))
val_size = len(dataset) - train_size
train_dataset, val_dataset = torch.utils.data.random_split(dataset, [train_size, val_size])
print(f"Train size: {train_size}, Validation size: {val_size}")

# Training arguments
training_args = TrainingArguments(
output_dir="./llama_finetuned",
learning_rate=1e-5,
num_train_epochs=3,
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_ratio=0.05,
logging_steps=10,
eval_strategy="steps",
eval_steps=50,
save_strategy="steps",
save_steps=100,
fp16=True,
gradient_checkpointing=True,
remove_unused_columns=False,
report_to="tensorboard",
load_best_model_at_end=True,
metric_for_best_model="loss",
dataloader_num_workers=0
)

# Initialize trainer
trainer = CustomTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset
)

print("Starting Llama training...")
try:
trainer.train()
print("Training completed successfully!")

print("Saving model...")
trainer.save_model("./final_llama_model")
print("Model saved successfully!")
return True

except Exception as e:
print(f"Error during training: {str(e)}")
print(f"Traceback: {traceback.format_exc()}")
return False

Top