Skip to main content

Easily distribute language models across multiple systems

Project description

Language Pipes (Beta)

Distribute language models across multiple systems

GitHub license Release Discord

Language pipes is a FOSS distributed network application designed to increase access to local language models.

Join our Discord for any comments or questions!


Disclaimer: This software is currently in Beta. Please be patient and if you encounter an error, please fill out a github issue!

Over the past few years open source language models have become much more powerful yet the most powerful models are still out of reach of the general population because of the extreme amounts of RAM that is needed to host these models. Language Pipes allows multiple computer systems to host the same model and move computation data between them so that no one computer has to hold all of the data for the model.

  • Quick Setup
  • Peer to peer network
  • OpenAI compatible API
  • Download and use models by HuggingFace ID
  • Encrypted communication between nodes

What Does it do?

In a basic sense, language models work by passing information through many layers. At each layer, several matrix multiplicatitons between the layer weights and the system state are performed and the data is moved to the next layer. Language pipes works by hosting different layers on different machines to split up the RAM cost across the system.

How is this different from Distributed Llama?

Distributed Llama is built to be a static network and requires individual setup and allocation for each model hosted. Language Pipes meanwhile, has a more flexible setup process that automatically selects which parts of the model to load based on what the network needs and the local systems resources. This allows separate users to collectively host a network together while maintaining trust that one configuration will not break the network. Users can come and go from the network and many different models can be hosted at the same time.

Installation

Ensure that you have Python 3.10.18 (or any 3.10 version) installed. For an easy to use Python version manager use pyenv. This specific version is necessary for the transformers library to work properly.

If you need gpu support, first make sure you have the correct pytorch version installed for your GPU's Cuda compatibility using this link:
https://pytorch.org/get-started/locally/

To download the models from Huggingface, ensure that you have git and git lfs installed.

To start using the application, install the latest version of the package from PyPi.

Using Pip:

pip install language-pipes

Two Node Example

The following example will show how to create a small network. Firstly, create a network key for the network on the first computer:

language-pipes create_key network.key

Also create a config.toml file to tell the program how to operate:

node_id="node-1"
oai_port=6000 # Hosts an OpenAI compatible server on port 6000

[[hosted_models]]
id="Qwen/Qwen3-1.7B"
device="cpu"
max_memory=1

Note: Go to the configuration documentation for more information about how the config properties work.

Once the configuration has been created you can start the server:

language-pipes run --config config.toml

This tells language pipes to download with the ID "Qwen/Qwen3-1.7B" from huggingface.co and host it using 1GB of ram. This will load part of the model but not all of it.

Next, install the package on a separate computer on your home network and create a config.toml file like this:

node_id="node-2"
bootstrap_address="192.168.0.10" # Local ip address of node-1

[[hosted_models]]
id="Qwen/Qwen3-1.7B"
device="cpu"
max_memory=3

Copy the network.key file to the same directory that the config is in using a usb drive or sftp.

Run the same command again on the computer two:

language-pipes run --config config.toml

Node-2 will connect to node-1 and load the remaining parts of the model. The model is ready for inference using a standard openai chat API interface. An example request to the server is provided below:

import requests
import json

# node-1 IP address here
url = "http://127.0.0.1:6000/v1/chat/completions"

headers = {
    "Content-Type": "application/json"
}

payload = {
    "model": "Qwen/Qwen3-1.7B",
    "max_completion_tokens": 10,
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Write a haiku about distributed systems."}
    ]
}

response = requests.post(url, headers=headers, data=json.dumps(payload))

print("Status Code:", response.status_code)
print("Response JSON:", response.json())

Models Supported

  • Llama 2 & Llama 3.X
  • Qwen3
  • More to come!

Dependencies

Citation

If you use the project for an academic endeavour please use this citation.

@software{Clemmer_Language_Pipes_2025,
  author       = {Erin Clemmer},
  title        = {Language Pipes},
  abstract     = {Distribute language models across multiple systems.},
  version      = {0.0.1},
  date         = {2025-09-01},
  url          = {https://github.com/erinclemmer/language-pipes},
  keywords     = {Large Language Models, Transformers, Distributed Networks},
  license      = {MIT},
  orcid        = {0009-0005-0597-6197}
}

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

language_pipes-0.3.1.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

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

language_pipes-0.3.1-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file language_pipes-0.3.1.tar.gz.

File metadata

  • Download URL: language_pipes-0.3.1.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for language_pipes-0.3.1.tar.gz
Algorithm Hash digest
SHA256 19d74b97a5bcf21747aefacc94655cc06403a38e08e92f3efc916b4ba09a6680
MD5 b6422dc21da0f461eafd8e7f38d349f5
BLAKE2b-256 4b82189c8e3f018e10350bd08cfd0391e95bbd43e477b922cde2231b52f47f95

See more details on using hashes here.

Provenance

The following attestation bundles were made for language_pipes-0.3.1.tar.gz:

Publisher: publish.yml on erinclemmer/language-pipes

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

File details

Details for the file language_pipes-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: language_pipes-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for language_pipes-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8e8710bfde6c6b681ee9edfa1cf59083cbd63fcb63c6a404a7c1f6c360e34141
MD5 74fdfcd724649bda7175317ebc02fd2c
BLAKE2b-256 bba3b3e884bc9f6ea32c417f2dba7e7819578823527cb33e8cc1d87d6fcf9022

See more details on using hashes here.

Provenance

The following attestation bundles were made for language_pipes-0.3.1-py3-none-any.whl:

Publisher: publish.yml on erinclemmer/language-pipes

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