Skip to main content

Wrapper of many OS libraries to finetune LLMs and run them in inference mode efficiently.

Project description

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

--- 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

Notes

  • The current version of this repository is using version 4.43.2 of the transformer package, which is different from version 4.42.3 in the Kaggle environemnt.
  • The current version of this repository is using version 1.7.1 of the polars package, which is different from version 1.1.0 in the Kaggle environemnt.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

giotto_llm-0.0.1.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

giotto_llm-0.0.1-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file giotto_llm-0.0.1.tar.gz.

File metadata

  • Download URL: giotto_llm-0.0.1.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for giotto_llm-0.0.1.tar.gz
Algorithm Hash digest
SHA256 61eaabcad6cd094128751c31f1d93b6b3128877647b4c1506f149e474868b098
MD5 7858ad55e9ae4f4038ffe632ee8c611f
BLAKE2b-256 9362f7a5d1b2fd7bd66128ed01c8dfb50a6dcd37c667f7d36f23fb3c8cdb1fa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for giotto_llm-0.0.1.tar.gz:

Publisher: python-publish.yml on giotto-ai/giotto-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file giotto_llm-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: giotto_llm-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for giotto_llm-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3fcd0c16c45ccc30f5351fa14ddabb568b896d8290976d0ace2b43e628f4da28
MD5 1e117f1921091bdf0dc31b533ed76529
BLAKE2b-256 af45f595c15ad1c888cf1a7ff2e4266dce1b7a78124a225cffba8d068e581c07

See more details on using hashes here.

Provenance

The following attestation bundles were made for giotto_llm-0.0.1-py3-none-any.whl:

Publisher: python-publish.yml on giotto-ai/giotto-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page