tmmdev2's picture
Upload 2 files
6574d6f verified
Raw History Blame Contribute Delete
2.24 kB
from transformers import LlamaConfig, AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments
from datasets import Dataset
import pandas as pd
import numpy as np
import torch
from pathlib import Path
def generate_test_candles(n_samples=50):
timestamps = pd.date_range(start="2024-01-01", periods=n_samples, freq="D")
data = {
"time": timestamps.astype(np.int64) // 10**9,
"open": np.random.uniform(100, 150, n_samples),
"high": np.random.uniform(150, 200, n_samples),
"low": np.random.uniform(50, 100, n_samples),
"close": np.random.uniform(100, 150, n_samples),
"volume": np.random.uniform(1000, 5000, n_samples)
}
return pd.DataFrame(data)
def prepare_training_data(examples):
features = np.column_stack([
examples['time'],
examples['open'],
examples['high'],
examples['low'],
examples['close'],
examples['volume']
])
return {
"input_ids": torch.tensor(features, dtype=torch.float32),
"labels": torch.tensor(examples['close'], dtype=torch.float32)
}
Path("./results").mkdir(exist_ok=True)
Path("./logs").mkdir(exist_ok=True)
test_data = generate_test_candles()
dataset = Dataset.from_pandas(test_data)
dataset = dataset.map(prepare_training_data, batched=True)
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
learning_rate=2e-4,
fp16=True,
save_steps=100,
logging_dir="./logs",
logging_steps=10,
remove_unused_columns=False
)
config = LlamaConfig()
model = AutoModelForCausalLM.from_pretrained(
"tmmdev2/llama-vision-charts",
config=config,
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"tmmdev2/llama-vision-charts",
trust_remote_code=True
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer
)
results = trainer.train()
model.save_pretrained("./results/final_model")
tokenizer.save_pretrained("./results/final_model")
print("Training completed!")
print(f"Final loss: {results.training_loss}")