Easily distribute language models across multiple systems
Project description
Language Pipes (Beta)
Distribute language models across multiple systems
Language pipes is a FOSS distributed network application designed to increase access to local language models.
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.
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
Quick Start
The easiest way to get started is with the interactive setup wizard:
language-pipes
This guides you through network key generation, configuration, and starts the server.
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 keygen 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 serve --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 serve --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 using the OpenAI Python library:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:6000/v1", # node-1 IP address
api_key="not-needed" # API key not required for Language Pipes
)
response = client.chat.completions.create(
model="Qwen/Qwen3-1.7B",
max_completion_tokens=100,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a haiku about distributed systems."}
]
)
print(response.choices[0].message.content)
Install the OpenAI library with: pip install openai
Models Supported
- Llama 2 & Llama 3.X
- Qwen3
- More to come!
Dependencies
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file language_pipes-0.9.0.tar.gz.
File metadata
- Download URL: language_pipes-0.9.0.tar.gz
- Upload date:
- Size: 36.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41303a086900d7b62069cbe0eeebcae5c4520d1a041156a54761954e98342044
|
|
| MD5 |
f8432d370f8ffc8b102a06c2df4024db
|
|
| BLAKE2b-256 |
9dce209be926a5943d98755ca881f6ddc2468f9452b1d4aa01add35b49d59fcf
|
Provenance
The following attestation bundles were made for language_pipes-0.9.0.tar.gz:
Publisher:
publish.yml on erinclemmer/language-pipes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
language_pipes-0.9.0.tar.gz -
Subject digest:
41303a086900d7b62069cbe0eeebcae5c4520d1a041156a54761954e98342044 - Sigstore transparency entry: 731985976
- Sigstore integration time:
-
Permalink:
erinclemmer/language-pipes@620ce935116ac06c4b611dfc30913eeee5ec590b -
Branch / Tag:
refs/tags/0.9.0 - Owner: https://github.com/erinclemmer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@620ce935116ac06c4b611dfc30913eeee5ec590b -
Trigger Event:
release
-
Statement type:
File details
Details for the file language_pipes-0.9.0-py3-none-any.whl.
File metadata
- Download URL: language_pipes-0.9.0-py3-none-any.whl
- Upload date:
- Size: 38.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d50d7bb97b9ba3ec09e02094ed20d2d6391530d2de27413fa5998d450496659f
|
|
| MD5 |
08ccc55e2b78a395bd880089cdd6354c
|
|
| BLAKE2b-256 |
a8e39f41ffb6e4d81255f6dd815d050161b8d824c439dfae3cda05e1984ddccf
|
Provenance
The following attestation bundles were made for language_pipes-0.9.0-py3-none-any.whl:
Publisher:
publish.yml on erinclemmer/language-pipes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
language_pipes-0.9.0-py3-none-any.whl -
Subject digest:
d50d7bb97b9ba3ec09e02094ed20d2d6391530d2de27413fa5998d450496659f - Sigstore transparency entry: 731985979
- Sigstore integration time:
-
Permalink:
erinclemmer/language-pipes@620ce935116ac06c4b611dfc30913eeee5ec590b -
Branch / Tag:
refs/tags/0.9.0 - Owner: https://github.com/erinclemmer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@620ce935116ac06c4b611dfc30913eeee5ec590b -
Trigger Event:
release
-
Statement type: