--- language: - en license: mit library_name: transformers base_model: openai-community/gpt2 datasets: - sander-wood/irishman tags: - text-generation - music-generation - abc-notation - irish-music - gpt2 - full-finetune pipeline_tag: text-generation --- Try the live demo Space: https://huggingface.co/spaces/Vedant3907/gpt2-irish-folk-tune-generator-space Weekend project demo: an original dataset tune is played first, followed by a GPT-2 generated tune from similar ABC notation context. # GPT-2 Irish ABC Tune Generator This model is a full fine-tune of `openai-community/gpt2` on the `sander-wood/irishman` dataset, a collection of Irish folk tunes represented in ABC notation. The model generates symbolic music text, not audio. Generated output can be pasted into an ABC player such as [abc.rectanglered.com](https://abc.rectanglered.com/) or [ABCjs Editor](https://editor.drawthedots.com/) to hear the tune. ## Model Details - **Base model:** `openai-community/gpt2` - **Training method:** Full fine-tuning - **Dataset:** `sander-wood/irishman` - **Task:** Causal language modeling / ABC notation continuation - **Max sequence length:** 512 tokens - **Training hardware:** Google Colab T4 GPU - **Training duration:** Approximately one epoch - **Validation loss:** `0.9962592720985413` ## What The Model Learns The training text was formatted as: ```text ``` So a prompt can start with a control code, and the model will continue by generating ABC notation. Example prompt: ```text S:2 B:8 E:6 B:8 ``` The output should look like ABC music notation with headers and note sequences. ## Usage ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch model_id = "Vedant3907/gpt2-irish-folk-tune-generator" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id) device = "cuda" if torch.cuda.is_available() else "cpu" model.to(device) model.eval() def generate_tune(prompt="S:2 B:8 E:6 B:8\n", max_new_tokens=400): inputs = tokenizer(prompt, return_tensors="pt").to(device) with torch.no_grad(): output = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=True, temperature=0.9, top_k=40, top_p=0.95, pad_token_id=tokenizer.eos_token_id, eos_token_id=tokenizer.eos_token_id, ) return tokenizer.decode(output[0], skip_special_tokens=True) print(generate_tune()) ``` ## Example Prompt ```text S:2 B:8 E:6 B:8 ``` If the generated output does not include a complete ABC header, add one manually before playing it: ```text X:1 M:4/4 L:1/8 K:G ``` Then paste the full ABC text into: - - - ## Evaluation The model was evaluated on the dataset validation split. ```text eval_loss: 0.9962592720985413 ``` The final logged training loss was around `1.02`, and the validation loss was close to that value, suggesting the model did not obviously overfit during this run. ## Training Loss Table Compact view of the training loss curve. The full logged loss table is available in `training_loss_curve.csv`. | Step | Training Loss | |---:|---:| | 50 | 3.143394 | | 500 | 1.461160 | | 1000 | 1.315162 | | 1500 | 1.255494 | | 2000 | 1.233580 | | 2500 | 1.160884 | | 3000 | 1.140212 | | 3500 | 1.128867 | | 4000 | 1.115015 | | 4500 | 1.089873 | | 5000 | 1.078019 | | 5500 | 1.059447 | | 6000 | 1.082058 | | 6500 | 1.072979 | | 7000 | 1.060261 | | 7500 | 1.066326 | | 8000 | 1.051891 | | 8500 | 1.054574 | | 9000 | 1.058629 | | 9500 | 1.041122 | | 10000 | 1.046246 | | 10500 | 1.023033 | | 11000 | 1.031550 | | 11500 | 1.030448 | | 12000 | 1.031115 | | 12500 | 1.029919 | | 12800 | 1.029599 | ## Limitations - The model generates ABC notation, not direct audio. - Some generations may be syntactically invalid ABC. - Some outputs may need manual cleanup before playback. - The model may reproduce fragments or patterns from the training data. - Musical quality varies; sampling multiple outputs and selecting the best one is recommended. ## Intended Use This model is intended for experimentation with Irish folk tune generation, symbolic music modeling, and ABC notation text generation. It is not intended for claims of originality or commercial music production without additional review for memorization and licensing concerns. ## Training Summary This was trained as a practical free-GPU fine-tuning experiment after the original Karpathy `autoresearch` training setup proved unsuitable for Google Colab's free T4 GPU. Instead of training from scratch, this model uses GPT-2 as a pretrained base and adapts it to Irish ABC notation.