Edit model card

Epigr_1_Llama-3.1-8B-Instruct_date

This is a fine-tuned version of the Llama-3.1-8B-Instruct model, specialized in assigning a date to Greek inscriptions. On a test set of 1,856 unseen inscriptions, its predictions were, on average, 26.2 years away from the actual date spans. See https://arxiv.org/abs/2409.13870.

Dataset

This model was finetuned on the Ericu950/Inscriptions_1 dataset, which consists of Greek Inscriptions and their corresponding dates and geographical attributions sourced from PHI via https://github.com/sommerschield/iphi.

Usage

To run the model on a GPU with large memory capacity, follow these steps:

1. Download and load the model

import json
from transformers import pipeline, AutoTokenizer, LlamaForCausalLM
import torch
model_id = "Ericu950/Epigr_1_Llama-3.1-8B-Instruct_date"
model = LlamaForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
generation_pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    device_map="auto",
)

2. Run inference on an inscription of your choice

# This is a rough transcription of IG XII,4 5:4043 from https://inscriptions.packhum.org/text/359280?bookid=879&location=1678
inscription_edition = "----εκτηι ισταμενου· ευμολποσ μολπου επεστατει· πρυτανεων γνωμη μεσσηνεωσ του διονοσ κατασταθεντοσ υπο --—ου του μυγαλου ερμωνοσ του μυιστρου κατασταθεντοσ υπο --—ρατου του προμαχου μολπου του μολπου λεοντοσ του -—ιππου κατασταθεντοσ υπο αριστοφανου του νουμηνιου του στησιοχου ηρακλειτου του αρτεμιδωρου δημοφωντοσ του πρυτανιοσ δαμωνοσ του ονφαλιωνοσ· επειδη οι δικασται οι αποσταλεντεσ εισ καλυμναν κομιζουσιν ψηφισμα παρα του δημου του καλυμνιων εν ωι γεγραπται οτι ο δημοσ ο καλυμνιων στεφανοι τον δημον χρυσωι στεφανωι αρετησ ενεκεν και ευνοιασ τησ εισ αυτον στεφανοι δε και τουσ δικαστασ τουσ αποσταλεντασ χρυσωι στεφανωι καλοκαγαθιασ ενεκεν κλεανδρον διοδωρου λεοντα ευβουλου κεφαλον δρακοντοσ θεοδωρον νουμηνιου λεοντα δρακοντιδου και περι τουτων οιεται δειν επιμελειαν ποιησασθαι τον δημον οπωσ ο τησ πολεωσ στεφανοσ αναγορευθηι και ο των δικαστων εν τωι θεατρωι διονυσιοισ δεδοχθαι τωι δημωι· τον μεν αγωνοθετην αναγγειλαι τον τησ πολεωσ στεφανον και τον των δικαστων κυκλιων τηι πρωτηι· επηινησθαι δε και τουσ δικαστασ τουσ αποσταλεντασ επειδη αξιοι γενομενοι του δημου τιμασ περιεποιησαν τηι πολει· οπωσ δε και το ψηφισμα τουτο και το παρα καλυμνιων αναγραφηι εν τωι επιφανεστατωι τοπωι καθα και καλυμνιοι αξιουσιν οι νεωποιαι επιμελειαν ποιησασθωσαν ινα αναγραφηι αμφοτερα τα ψηφισματα εν τωι ιερωι του διοσ η τησ αρτεμιδοσ· καλεσαι δε και τουσ δικαστασ τουσ αποσταλεντασ εισ το πρυτανειον. εδοξε ται βουλαι και τωι δαμωι γνωμα προσταταν· επειδη ο δαμοσ ο ιασεων εν τε τοισ προτερον χρονοις ευνουσ ων και φιλοσ διατελει τωι δαμωι τωι καλυμνιων και νυν πρεσβευοντοσ του δαμου και αξιοντοσ δομεν ανδρασ πεντε οιτινεσ παραγενομενοι μαλιστα μεν διαλυσεντι τουσ διαφερομενουσ των πολιταν ει δε μη κρινεντι δια ψηφου απεστειλε ανδρασ καλουσ καγαθουσ οι παραγενομενοι πασαν σπουδαν εποιησαντο του διαλυθεντασ τουσ πολιτασ τα ποτ’ αυτουσ πολιτευεσθαι μετ’ ομονοιασ· και απογραφεισαν δικαν εισ το δικαστηριον πλεων η τριακοσιαν πεντηκοντα τασ μεν πλειστας διελυσαν πεισαντεσ τουσ αντιδικουσ οπωσ μη δια ψηφου των πραγματων κρινομενων εισ πλεω ταραχαν ο δαμοσ καθισταται· τινασ δε και διαιτασαν συμφεροντωσ εκατεροισ τοισ αντιδικοις·"
system_prompt = "Date this inscription to an exact year!"
input_messages = [
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": inscription_edition},
]
terminators = [
    tokenizer.eos_token_id,
    tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = generation_pipeline(
    input_messages,
    max_new_tokens=4,
    num_beams=10, # Set this as high as your memory will allow!
    num_return_sequences=1,
    early_stopping=True,
)
beam_contents = []
for output in outputs:
    generated_text = output.get('generated_text', [])
    for item in generated_text:
        if item.get('role') == 'assistant':
            beam_contents.append(item.get('content'))
real_response = "ca. 260-250 BC"
print(f"Year: {real_response}")
for i, content in enumerate(beam_contents, start=1):
    print(f"Suggestion {i}: {content}")

Expected Output:

Year: ca. 260-250 BC
Suggestion 1: -276

Usage on free tier in Google Colab

If you don’t have access to a larger GPU but want to try the model out, you can run it in a quantized format in Google Colab. The quality of the responses might deteriorate significantly. Follow these steps:

Step 1: Connect to free GPU

  1. Click Connect arrow_drop_down near the top right of the notebook.
  2. Select Change runtime type.
  3. In the modal window, select T4 GPU as your hardware accelerator.
  4. Click Save.
  5. Click the Connect button to connect to your runtime. After some time, the button will present a green checkmark, along with RAM and disk usage graphs. This indicates that a server has successfully been created with your required hardware.

Step 2: Install Dependencies

!pip install -U bitsandbytes
import os
os._exit(00)

Step 3: Download and quantize the model

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, pipeline
import torch
quant_config = BitsAndBytesConfig(
   load_in_4bit=True,
   bnb_4bit_quant_type="nf4",
   bnb_4bit_use_double_quant=True,
   bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained("Ericu950/Epigr_1_Llama-3.1-8B-Instruct_date",
device_map = "auto", quantization_config = quant_config)
tokenizer = AutoTokenizer.from_pretrained("Ericu950/Epigr_1_Llama-3.1-8B-Instruct_date")
generation_pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    device_map="auto",
)

Step 4: Run inference on an inscription of your choice

# This is a transcription of IG XII,4 5:4043 from https://inscriptions.packhum.org/text/359280?bookid=879&location=1678
inscription_edition = "----εκτηι ισταμενου· ευμολποσ μολπου επεστατει· πρυτανεων γνωμη μεσσηνεωσ του διονοσ κατασταθεντοσ υπο --—ου του μυγαλου ερμωνοσ του μυιστρου κατασταθεντοσ υπο --—ρατου του προμαχου μολπου του μολπου λεοντοσ του -—ιππου κατασταθεντοσ υπο αριστοφανου του νουμηνιου του στησιοχου ηρακλειτου του αρτεμιδωρου δημοφωντοσ του πρυτανιοσ δαμωνοσ του ονφαλιωνοσ· επειδη οι δικασται οι αποσταλεντεσ εισ καλυμναν κομιζουσιν ψηφισμα παρα του δημου του καλυμνιων εν ωι γεγραπται οτι ο δημοσ ο καλυμνιων στεφανοι τον δημον χρυσωι στεφανωι αρετησ ενεκεν και ευνοιασ τησ εισ αυτον στεφανοι δε και τουσ δικαστασ τουσ αποσταλεντασ χρυσωι στεφανωι καλοκαγαθιασ ενεκεν κλεανδρον διοδωρου λεοντα ευβουλου κεφαλον δρακοντοσ θεοδωρον νουμηνιου λεοντα δρακοντιδου και περι τουτων οιεται δειν επιμελειαν ποιησασθαι τον δημον οπωσ ο τησ πολεωσ στεφανοσ αναγορευθηι και ο των δικαστων εν τωι θεατρωι διονυσιοισ δεδοχθαι τωι δημωι· τον μεν αγωνοθετην αναγγειλαι τον τησ πολεωσ στεφανον και τον των δικαστων κυκλιων τηι πρωτηι· επηινησθαι δε και τουσ δικαστασ τουσ αποσταλεντασ επειδη αξιοι γενομενοι του δημου τιμασ περιεποιησαν τηι πολει· οπωσ δε και το ψηφισμα τουτο και το παρα καλυμνιων αναγραφηι εν τωι επιφανεστατωι τοπωι καθα και καλυμνιοι αξιουσιν οι νεωποιαι επιμελειαν ποιησασθωσαν ινα αναγραφηι αμφοτερα τα ψηφισματα εν τωι ιερωι του διοσ η τησ αρτεμιδοσ· καλεσαι δε και τουσ δικαστασ τουσ αποσταλεντασ εισ το πρυτανειον. εδοξε ται βουλαι και τωι δαμωι γνωμα προσταταν· επειδη ο δαμοσ ο ιασεων εν τε τοισ προτερον χρονοις ευνουσ ων και φιλοσ διατελει τωι δαμωι τωι καλυμνιων και νυν πρεσβευοντοσ του δαμου και αξιοντοσ δομεν ανδρασ πεντε οιτινεσ παραγενομενοι μαλιστα μεν διαλυσεντι τουσ διαφερομενουσ των πολιταν ει δε μη κρινεντι δια ψηφου απεστειλε ανδρασ καλουσ καγαθουσ οι παραγενομενοι πασαν σπουδαν εποιησαντο του διαλυθεντασ τουσ πολιτασ τα ποτ’ αυτουσ πολιτευεσθαι μετ’ ομονοιασ· και απογραφεισαν δικαν εισ το δικαστηριον πλεων η τριακοσιαν πεντηκοντα τασ μεν πλειστας διελυσαν πεισαντεσ τουσ αντιδικουσ οπωσ μη δια ψηφου των πραγματων κρινομενων εισ πλεω ταραχαν ο δαμοσ καθισταται· τινασ δε και διαιτασαν συμφεροντωσ εκατεροισ τοισ αντιδικοις·"
system_prompt = "Date this inscription to an exact year!"
input_messages = [
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": inscription_edition},
]
terminators = [
    tokenizer.eos_token_id,
    tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = generation_pipeline(
    input_messages,
    max_new_tokens=4,
    num_beams=10, # Set this as high as your memory will allow!
    num_return_sequences=1,
    early_stopping=True,
)
beam_contents = []
for output in outputs:
    generated_text = output.get('generated_text', [])
    for item in generated_text:
        if item.get('role') == 'assistant':
            beam_contents.append(item.get('content'))
real_response = "ca. 260-250 BC"
print(f"Year: {real_response}")
for i, content in enumerate(beam_contents, start=1):
    print(f"Suggestion {i}: {content}")

Expected Output:

Year: ca. 260-250 BC
Suggestion 1: -276
Downloads last month
6
Safetensors
Model size
8.03B params
Tensor type
BF16
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for Ericu950/Epigr_1_Llama-3.1-8B-Instruct_date

Finetuned
(225)
this model

Dataset used to train Ericu950/Epigr_1_Llama-3.1-8B-Instruct_date

Collection including Ericu950/Epigr_1_Llama-3.1-8B-Instruct_date