higgsfield README

The project's README from github.com/higgsfield-ai/higgsfield. As one markdown file: README.md.

higgsfield - multi node training without crying

Higgsfield is an open-source, fault-tolerant, highly scalable GPU orchestration, and a machine learning framework designed for training models with billions to trillions of parameters, such as Large Language Models (LLMs).

PyPI version

architecture

Higgsfield serves as a GPU workload manager and machine learning framework with five primary functions:

  1. Allocating exclusive and non-exclusive access to compute resources (nodes) to users for their training tasks.
  2. Supporting ZeRO-3 deepspeed API and fully sharded data parallel API of PyTorch, enabling efficient sharding for trillion-parameter models.
  3. Offering a framework for initiating, executing, and monitoring the training of large neural networks on allocated nodes.
  4. Managing resource contention by maintaining a queue for running experiments.
  5. Facilitating continuous integration of machine learning development through seamless integration with GitHub and GitHub Actions. Higgsfield streamlines the process of training massive models and empowers developers with a versatile and robust toolset.

Install

$ pip install higgsfield==0.0.3

Train example

That's all you have to do in order to train LLaMa in a distributed setting:

from higgsfield.llama import Llama70b
from higgsfield.loaders import LlamaLoader
from higgsfield.experiment import experiment

import torch.optim as optim
from alpaca import get_alpaca_data

@experiment("alpaca")
def train(params):
    model = Llama70b(zero_stage=3, fast_attn=False, precision="bf16")

    optimizer = optim.AdamW(model.parameters(), lr=1e-5, weight_decay=0.0)

    dataset = get_alpaca_data(split="train")
    train_loader = LlamaLoader(dataset, max_words=2048)

    for batch in train_loader:
        optimizer.zero_grad()
        loss = model(batch)
        loss.backward()
        optimizer.step()

    model.push_to_hub('alpaca-70b')

How it's all done?

  1. We install all the required tools in your server (Docker, your project's deploy keys, higgsfield binary).
  2. Then we generate deploy & run workflows for your experiments.
  3. As soon as it gets into Github, it will automatically deploy your code on your nodes.
  4. Then you access your experiments' run UI through Github, which will launch experiments and save the checkpoints.

Design

We follow the standard pytorch workflow. Thus you can incorporate anything besides what we provide, deepspeed, accelerate, or just implement your custom pytorch sharding from scratch.

Enviroment hell

No more different versions of pytorch, nvidia drivers, data processing libraries. You can easily orchestrate experiments and their environments, document and track the specific versions and configurations of all dependencies to ensure reproducibility.

Config hell

No need to define 600 arguments for your experiment. No more yaml witchcraft. You can use whatever you want, whenever you want. We just introduce a simple interface to define your experiments. We have even taken it further, now you only need to design the way to interact.

Compatibility

We need you to have nodes with:

Clouds we have tested on:

Feel free to open an issue if you have any problems with other clouds.

Getting started

Setup

Here you can find the quick start guide on how to setup your nodes and start training.

Tutorial

API for common tasks in Large Language Models training.

Platform Purpose Estimated Response Time Support Level
Github Issues Bug reports, feature requests, install issues, usage issues, etc. < 1 day Higgsfield Team
Twitter For staying up-to-date on new features. Daily Higgsfield Team
Website Discussion, news. < 2 days Higgsfield Team

higgsfield (higgsfield-ai/higgsfield)

Searching Database…

Что это?Higgsfield — open-source отказоустойчивая система оркестрации GPU и фреймворк машинного обучения для обучения огромных моделей — от миллиардов до триллионов параметров, например LLM.
Это планировщик кластера, фреймворк обучения или и то, и другое?И то, и другое: это менеджер GPU-нагрузок, распределяющий вычисления между пользователями и ставящий эксперименты в очередь, плюс фреймворк на базе PyTorch для запуска, выполнения и мониторинга распределённых задач обучения.
Как запустить задачу обучения?Вы устанавливаете бинарник higgsfield, который настраивает Docker, ключи развёртывания и инструменты на вашем сервере, затем он генерирует GitHub-воркфлоу deploy и run, так что пуш в GitHub автоматически разворачивает ваш код на узлах.
Каким требованиям должны соответствовать мои узлы обучения?Каждый узел должен работать на Ubuntu, быть доступным по SSH и иметь пользователя без root с правами sudo без пароля.
С какими облачными провайдерами он реально работает?Он проверен только на Azure, LambdaLabs и FluidStack; другие облака могут работать, но без гарантий, а при проблемах просят открыть issue.
Поддерживает ли он шардирование DeepSpeed или PyTorch FSDP?Да, Higgsfield поддерживает ZeRO-3 DeepSpeed API и API полностью шардированной параллельной обработки данных (FSDP) в PyTorch для эффективного шардирования моделей с триллионами параметров.
Какую проблему решает очередь экспериментов?Она управляет борьбой пользователей за ресурсы, держа очередь запуска экспериментов, чтобы эксклюзивный и неэксклюзивный доступ к узлам распределялся честно.
Почему бы просто не писать обычные скрипты обучения на PyTorch?Higgsfield создан, чтобы убить «ад окружений» и «ад конфигов»: он стандартизирует версии зависимостей/драйверов на всех узлах и заменяет разросшиеся YAML-конфиги простым интерфейсом эксперимента.
Как GitHub вписывается в процесс обучения?GitHub Actions используется как основа развёртывания: когда код эксперимента попадает в GitHub, воркфлоу автоматически разворачивают его на ваших узлах, а запуски и чекпоинты можно наблюдать через интерфейс GitHub.
Size
5 MB
Stars
6.1K
Age
8y
Commits · 90 Days