giotto-llm
Overview
This repo is a wrapper of many open source packages that are needed to fine-tune LLMs and run them in inference mode effectively.
Important: See the Makefile for useful commands.
Documentation
The online documentation con be found at https://giotto-ai.github.io/giotto-llm/index.html
Setup
Environmental variables
The following environmental variables needs to be set (update credential path below):
GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gloud/giotto-research-admin.json
export MLFLOW_TRACKING_URI=http://cluster-manager:5051
export PATH=$HOME/.local/bin:$PATH
Gitlab ssh-key
Generate key with ssh-keygen, and add to gitlab.
Install and download packages, download data and model
make
Finetune models on multi-gpu
Example of QwenVL-based model:
torchrun --nproc-per-node=gpu -m llm_prompts.finetuning -d re_arc_400x5 --model_id Qwen/Qwen2-VL-2B-Instruct --wrapper QwenVL -o qwenvl --batch_size 1 --gradient_accumulation_steps 16 --quantization 8bit-4 --neftune_noise_alpha 10.0 --num_train_epochs 15 --learning_rate 2e-4
Example of Molmo-based model:
torchrun --nproc-per-node=gpu -m llm_prompts.finetuning -d re_arc_400x5 --model_id allenai/MolmoE-1B-0924 --wrapper Molmo -o molmo --batch_size 1 --gradient_accumulation_steps 16 --quantization 8bit-4 --neftune_noise_alpha 10.0 --num_train_epochs 15 --learning_rate 2e-4
Example of Llama-based models:
torchrun --nproc-per-node=gpu -m llm_prompts.finetuning -d re_arc_400x5 --model_id meta-llama/Llama-3.2-1B-Instruct --wrapper CausalLM -o llama --batch_size 1 --gradient_accumulation_steps 16 --quantization 8bit-4 --neftune_noise_alpha 10.0 --num_train_epochs 15 --learning_rate 2e-4
Example of Qwen-based models:
torchrun --nproc-per-node=gpu -m llm_prompts.finetuning -d re_arc_400x5 --model_id Qwen/Qwen2.5-0.5B --wrapper CausalLM -o qwen --batch_size 1 --gradient_accumulation_steps 16 --quantization 8bit-4 --neftune_noise_alpha 10.0 --num_train_epochs 15 --learning_rate 2e-4
See full list of currently tested models in ./models/.
Validate fine-tuned models
The validation script is single gpu for now, and requires a config entry in ./llm_prompts/validation/__main__.py.
# Only single gpu support for now
CUDA_VISIBLE_DEVICES=0 python -m llm_prompts.validation --dataset_type evaluation --finetuned_model_id <MODEL-ID> --max_num_tasks 400
where <MODEL-ID> is a fine-tuned model defined in the config.
Info
See
- ARC technical guide: specs
--- CPU only ---
4 CPU Cores
30 Gigabytes of RAM
or
--- P100 GPU ---
1 Nvidia Tesla P100 GPI
4 CPU cores
29 Gigabytes of RAM
or
--- T4 2x GPU ---
2 Nvidia Tesla T4 GPUs
4 CPU cores
29 Gigabytes of RAM
- Awesome ARC: lots of information
- Lots of data: millions of synthetically generated tasks
- Unsloth: fine-tune LLMs. Also with quantization.
- Fine-tuning example: how to fine-tune and quantize a LLM model from HugginFace
Notes
- The current version of this repository is using version
4.43.2of thetransformerpackage, which is different from version4.42.3in the Kaggle environemnt. - The current version of this repository is using version
1.7.1of thepolarspackage, which is different from version1.1.0in the Kaggle environemnt.
Metadata
Release files for giotto-llm 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| giotto_llm-0.0.1.tar.gz | 2.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| giotto_llm-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.8 MB
Release files / giotto_llm-0.0.1.tar.gz
| Download URL | giotto_llm-0.0.1.tar.gz |
|---|---|
| Size | 2.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61eaabcad6cd094128751c31f1d93b6b3128877647b4c1506f149e474868b098
|
|
BLAKE2b-256 checksum How to use checksums |
9362f7a5d1b2fd7bd66128ed01c8dfb50a6dcd37c667f7d36f23fb3c8cdb1fa7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 23, 2024.
Transparency logRelease files / giotto_llm-0.0.1-py3-none-any.whl
| Download URL | giotto_llm-0.0.1-py3-none-any.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3fcd0c16c45ccc30f5351fa14ddabb568b896d8290976d0ace2b43e628f4da28
|
|
BLAKE2b-256 checksum How to use checksums |
af45f595c15ad1c888cf1a7ff2e4266dce1b7a78124a225cffba8d068e581c07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 23, 2024.
Transparency log