kalavai-client 0.7.3__py3-none-any.whl → 0.7.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kalavai_client/__init__.py +1 -1
- kalavai_client/assets/apps.yaml +1 -1
- kalavai_client/assets/default_pool_config.yaml +3 -2
- kalavai_client/assets/docker-compose-template.yaml +3 -0
- kalavai_client/assets/model_deployment_values.yaml +68 -0
- kalavai_client/bridge_api.py +15 -0
- kalavai_client/cli.py +18 -6
- kalavai_client/core.py +76 -6
- kalavai_client/env.py +1 -0
- kalavai_client/utils.py +2 -1
- {kalavai_client-0.7.3.dist-info → kalavai_client-0.7.5.dist-info}/METADATA +8 -5
- kalavai_client-0.7.5.dist-info/RECORD +25 -0
- {kalavai_client-0.7.3.dist-info → kalavai_client-0.7.5.dist-info}/WHEEL +1 -1
- kalavai_client-0.7.3.dist-info/RECORD +0 -24
- {kalavai_client-0.7.3.dist-info → kalavai_client-0.7.5.dist-info}/entry_points.txt +0 -0
- {kalavai_client-0.7.3.dist-info → kalavai_client-0.7.5.dist-info/licenses}/LICENSE +0 -0
kalavai_client/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
|
2
|
-
__version__ = "0.7.
|
2
|
+
__version__ = "0.7.5"
|
kalavai_client/assets/apps.yaml
CHANGED
@@ -3,18 +3,19 @@ server:
|
|
3
3
|
ip_address: null
|
4
4
|
location: null
|
5
5
|
name: "kalavai_cluster"
|
6
|
+
mtu: 1280
|
6
7
|
|
7
8
|
core:
|
8
9
|
# Deploy systems
|
9
10
|
deploy:
|
10
11
|
- volcano
|
11
12
|
- cert_manager
|
12
|
-
|
13
|
+
#- rocm
|
13
14
|
- watcher
|
14
15
|
- hami
|
15
16
|
#- lago
|
16
17
|
#- opencost
|
17
|
-
|
18
|
+
#- prometheus
|
18
19
|
#- kuberay
|
19
20
|
#- minio
|
20
21
|
# "Kalavai API endpoint"
|
@@ -4,6 +4,7 @@ services:
|
|
4
4
|
image: gravitl/netclient:v0.90.0
|
5
5
|
container_name: {{vpn_name}}
|
6
6
|
platform: linux/{{target_platform}}
|
7
|
+
privileged: true
|
7
8
|
cap_add:
|
8
9
|
- NET_ADMIN
|
9
10
|
- SYS_MODULE
|
@@ -11,6 +12,7 @@ services:
|
|
11
12
|
environment:
|
12
13
|
- HOST_NAME={{node_name}}
|
13
14
|
- TOKEN={{vpn_token}}
|
15
|
+
- MTU={{mtu}}
|
14
16
|
volumes:
|
15
17
|
- /dev/net/tun:/dev/net/tun
|
16
18
|
restart: unless-stopped
|
@@ -58,6 +60,7 @@ services:
|
|
58
60
|
{% if node_labels %}
|
59
61
|
--extra="{{node_labels}}"
|
60
62
|
{% endif %}
|
63
|
+
--mtu={{mtu}}
|
61
64
|
|
62
65
|
# volumes:
|
63
66
|
# - {{k3s_path}}:/var/lib/rancher/k3s # Persist data
|
@@ -0,0 +1,68 @@
|
|
1
|
+
Qwen/Qwen3-4B-Instruct-2507-FP8:
|
2
|
+
size: 6 # should include weights + context window + batch size memory requirements
|
3
|
+
cuda:
|
4
|
+
template: vllm
|
5
|
+
values:
|
6
|
+
gpu_backend: "cuda"
|
7
|
+
litellm_key: ""
|
8
|
+
workers: ""
|
9
|
+
model_id: Qwen/Qwen3-4B-Instruct-2507-FP8
|
10
|
+
working_memory: 14
|
11
|
+
hf_token: ""
|
12
|
+
cpus: 2
|
13
|
+
gpus: 1
|
14
|
+
memory: 12
|
15
|
+
tensor_parallel_size: 1
|
16
|
+
pipeline_parallel_size: 1
|
17
|
+
tool_call_parser: hermes
|
18
|
+
extra: "--dtype float16 --enforce-eager --quantization fp8"
|
19
|
+
rocm:
|
20
|
+
template: vllm
|
21
|
+
values:
|
22
|
+
gpu_backend: "rocm"
|
23
|
+
litellm_key: ""
|
24
|
+
workers: ""
|
25
|
+
model_id: Qwen/Qwen3-4B-Instruct-2507-FP8
|
26
|
+
working_memory: 14
|
27
|
+
hf_token: ""
|
28
|
+
cpus: 2
|
29
|
+
gpus: 1
|
30
|
+
memory: 12
|
31
|
+
tensor_parallel_size: 1
|
32
|
+
pipeline_parallel_size: 1
|
33
|
+
tool_call_parser: hermes
|
34
|
+
extra: "--dtype float16 --enforce-eager"
|
35
|
+
Qwen/Qwen3-0.6B:
|
36
|
+
size: 4 # should include weights + context window + batch size memory requirements
|
37
|
+
cuda:
|
38
|
+
template: vllm
|
39
|
+
values:
|
40
|
+
gpu_backend: "cuda"
|
41
|
+
litellm_key: ""
|
42
|
+
workers: ""
|
43
|
+
model_id: Qwen/Qwen3-0.6B
|
44
|
+
working_memory: 8
|
45
|
+
hf_token: ""
|
46
|
+
cpus: 2
|
47
|
+
gpus: 1
|
48
|
+
memory: 8
|
49
|
+
tensor_parallel_size: 1
|
50
|
+
pipeline_parallel_size: 1
|
51
|
+
tool_call_parser: hermes
|
52
|
+
extra: "--dtype float16"
|
53
|
+
rocm:
|
54
|
+
template: vllm
|
55
|
+
values:
|
56
|
+
gpu_backend: "rocm"
|
57
|
+
litellm_key: ""
|
58
|
+
workers: ""
|
59
|
+
model_id: Qwen/Qwen3-0.6B
|
60
|
+
working_memory: 8
|
61
|
+
hf_token: ""
|
62
|
+
cpus: 2
|
63
|
+
gpus: 1
|
64
|
+
memory: 8
|
65
|
+
tensor_parallel_size: 1
|
66
|
+
pipeline_parallel_size: 1
|
67
|
+
tool_call_parser: hermes
|
68
|
+
extra: "--dtype float16"
|
kalavai_client/bridge_api.py
CHANGED
@@ -59,6 +59,7 @@ from kalavai_client.core import (
|
|
59
59
|
add_node_labels,
|
60
60
|
get_node_labels,
|
61
61
|
generate_worker_package,
|
62
|
+
get_deployment_values,
|
62
63
|
TokenType
|
63
64
|
)
|
64
65
|
from kalavai_client.utils import (
|
@@ -446,6 +447,20 @@ def job_deploy(request: DeployJobRequest, api_key: str = Depends(verify_api_key)
|
|
446
447
|
)
|
447
448
|
return result
|
448
449
|
|
450
|
+
@app.get("/get_deployment_values",
|
451
|
+
operation_id="get_deployment_values",
|
452
|
+
summary="Get deployment template values for a given model",
|
453
|
+
description="Given a model id from Huggingface, return the deployment template values required to load the model instance in the pool, including number of workers, number of gpus and gpu backend.",
|
454
|
+
tags=["job_management"],
|
455
|
+
response_description="Deployment template values")
|
456
|
+
def get_deployment_template_values(model_id: str, api_key: str = Depends(verify_api_key)):
|
457
|
+
"""
|
458
|
+
Get the deployment template values for a given model id:
|
459
|
+
|
460
|
+
- **model_id**: Model id from Huggingface type mode
|
461
|
+
"""
|
462
|
+
return get_deployment_values(model_id=model_id)
|
463
|
+
|
449
464
|
@app.post("/delete_job",
|
450
465
|
operation_id="delete_job",
|
451
466
|
summary="Terminate and remove a job from the pool",
|
kalavai_client/cli.py
CHANGED
@@ -62,7 +62,8 @@ from kalavai_client.core import (
|
|
62
62
|
uncordon_nodes,
|
63
63
|
TokenType,
|
64
64
|
unregister_pool,
|
65
|
-
update_pool
|
65
|
+
update_pool,
|
66
|
+
get_deployment_values
|
66
67
|
)
|
67
68
|
from kalavai_client.utils import (
|
68
69
|
check_gpu_drivers,
|
@@ -396,7 +397,7 @@ def pool__list(*others, user_only=False):
|
|
396
397
|
|
397
398
|
|
398
399
|
@arguably.command
|
399
|
-
def pool__start(*others, pool_config_file=None, apps: list=None, platform="amd64", ip_address: str=None, location: str=None, app_values: str=None, pool_config_values: str=None, non_interactive: bool=False):
|
400
|
+
def pool__start(*others, pool_config_file=None, apps: list=None, mtu: str=None, platform="amd64", ip_address: str=None, location: str=None, app_values: str=None, pool_config_values: str=None, non_interactive: bool=False):
|
400
401
|
|
401
402
|
"""
|
402
403
|
Start Kalavai pool and start/resume sharing resources.
|
@@ -439,7 +440,8 @@ def pool__start(*others, pool_config_file=None, apps: list=None, platform="amd6
|
|
439
440
|
target_platform=platform,
|
440
441
|
pool_config_file=pool_config_file,
|
441
442
|
apps=apps,
|
442
|
-
num_gpus=input_gpus(non_interactive=non_interactive)
|
443
|
+
num_gpus=input_gpus(non_interactive=non_interactive),
|
444
|
+
mtu=mtu
|
443
445
|
)
|
444
446
|
|
445
447
|
if "warning" in result:
|
@@ -482,7 +484,7 @@ def pool__token(*others, admin=False, user=False, worker=False):
|
|
482
484
|
return join_token
|
483
485
|
|
484
486
|
@arguably.command
|
485
|
-
def pool__check_token(token, *others, public=False):
|
487
|
+
def pool__check_token(token, *others, public=False, verbose=False):
|
486
488
|
"""
|
487
489
|
Utility to check the validity of a join token
|
488
490
|
"""
|
@@ -490,12 +492,14 @@ def pool__check_token(token, *others, public=False):
|
|
490
492
|
if "error" in result:
|
491
493
|
console.log(f"[red]Error in token: {result}")
|
492
494
|
return False
|
495
|
+
if verbose:
|
496
|
+
console.log(json.dumps(result["data"], indent=2))
|
493
497
|
|
494
498
|
console.log("[green]Token format is correct")
|
495
499
|
return True
|
496
500
|
|
497
501
|
@arguably.command
|
498
|
-
def pool__join(token, *others, platform="amd64", node_name=None, non_interactive=False):
|
502
|
+
def pool__join(token, *others, mtu=None, platform="amd64", node_name=None, non_interactive=False):
|
499
503
|
"""
|
500
504
|
Join Kalavai pool and start/resume sharing resources.
|
501
505
|
|
@@ -549,7 +553,8 @@ def pool__join(token, *others, platform="amd64", node_name=None, non_interactive
|
|
549
553
|
token=token,
|
550
554
|
node_name=node_name,
|
551
555
|
num_gpus=num_gpus,
|
552
|
-
ip_address=ip_address
|
556
|
+
ip_address=ip_address,
|
557
|
+
mtu=mtu
|
553
558
|
)
|
554
559
|
if "error" in result:
|
555
560
|
console.log(f"[red]Error when connecting: {result}")
|
@@ -1165,6 +1170,12 @@ def job__delete(name, *others, force_namespace: str=None):
|
|
1165
1170
|
console.log(f"{result}")
|
1166
1171
|
|
1167
1172
|
|
1173
|
+
@arguably.command
|
1174
|
+
def job__model_requirements(model_id: str, *others):
|
1175
|
+
values = get_deployment_values(model_id=model_id)
|
1176
|
+
console.log(values)
|
1177
|
+
|
1178
|
+
|
1168
1179
|
@arguably.command
|
1169
1180
|
def job__estimate(
|
1170
1181
|
*others,
|
@@ -1180,6 +1191,7 @@ def job__estimate(
|
|
1180
1191
|
precision_bytes = {
|
1181
1192
|
"fp32": 4,
|
1182
1193
|
"fp16": 2,
|
1194
|
+
"fp8": 1,
|
1183
1195
|
"int8": 1,
|
1184
1196
|
"int4": 0.5
|
1185
1197
|
}
|
kalavai_client/core.py
CHANGED
@@ -2,7 +2,7 @@ import os
|
|
2
2
|
import yaml
|
3
3
|
import time
|
4
4
|
from collections import defaultdict
|
5
|
-
import
|
5
|
+
import random
|
6
6
|
import uuid
|
7
7
|
import socket
|
8
8
|
import ipaddress
|
@@ -69,8 +69,7 @@ from kalavai_client.env import (
|
|
69
69
|
USER_NODE_LABEL,
|
70
70
|
DEFAULT_WATCHER_PORT,
|
71
71
|
HELM_APPS_FILE,
|
72
|
-
|
73
|
-
POOL_CONFIG_DEFAULT_VALUES,
|
72
|
+
MODEL_DEPLOYMENT_VALUES_MAPPING,
|
74
73
|
POOL_CONFIG_TEMPLATE,
|
75
74
|
FORBIDEDEN_IPS,
|
76
75
|
DEFAULT_POOL_CONFIG_TEMPLATE
|
@@ -105,6 +104,70 @@ class TokenType(Enum):
|
|
105
104
|
WORKER = 2
|
106
105
|
|
107
106
|
|
107
|
+
def get_deployment_values(model_id: str):
|
108
|
+
"""
|
109
|
+
Given a model ID and the resources in the pool, identify key
|
110
|
+
computing values required to deploy the model.
|
111
|
+
- GPU_BACKEND: rocm or cuda
|
112
|
+
- WORKERS: number of nodes to use
|
113
|
+
-
|
114
|
+
"""
|
115
|
+
# get hardcoded deployment values (per model)
|
116
|
+
with open(MODEL_DEPLOYMENT_VALUES_MAPPING, "r") as f:
|
117
|
+
mapping = yaml.safe_load(f)
|
118
|
+
|
119
|
+
def _parse_memory_str(memory: str):
|
120
|
+
memory = memory.replace("G", "")
|
121
|
+
return int(memory)
|
122
|
+
|
123
|
+
def _get_num_workers(memory_values: list[int], size):
|
124
|
+
workers = 0
|
125
|
+
available_memory = 0
|
126
|
+
for gpu_mem in memory_values:
|
127
|
+
available_memory += gpu_mem
|
128
|
+
workers += 1
|
129
|
+
if available_memory >= size:
|
130
|
+
break
|
131
|
+
return workers
|
132
|
+
|
133
|
+
# get resources
|
134
|
+
if model_id in mapping:
|
135
|
+
model_size = mapping[model_id]["size"]
|
136
|
+
# get gpus and extract available memory
|
137
|
+
nvidia_gpu_mems = []
|
138
|
+
amd_gpu_mems = []
|
139
|
+
backends = set()
|
140
|
+
for node_name, gpus in load_gpu_models():
|
141
|
+
for gpu in gpus["gpus"]:
|
142
|
+
if "nvidia" in gpu["model"].lower():
|
143
|
+
nvidia_gpu_mems.append(_parse_memory_str(gpu["memory"]))
|
144
|
+
backends.add("cuda")
|
145
|
+
else:
|
146
|
+
amd_gpu_mems.append(_parse_memory_str(gpu["memory"]))
|
147
|
+
backends.add("rocm")
|
148
|
+
nvidia_gpu_mems = sorted(nvidia_gpu_mems, reverse=False)
|
149
|
+
amd_gpu_mems = sorted(amd_gpu_mems, reverse=False)
|
150
|
+
# calculate num workers required
|
151
|
+
if sum(nvidia_gpu_mems) >= model_size and sum(amd_gpu_mems) < model_size:
|
152
|
+
gpu_backend = "cuda"
|
153
|
+
num_workers = _get_num_workers(memory_values=nvidia_gpu_mems, size=model_size)
|
154
|
+
elif sum(amd_gpu_mems) >= model_size and sum(nvidia_gpu_mems) < model_size:
|
155
|
+
gpu_backend = "rocm"
|
156
|
+
num_workers = _get_num_workers(memory_values=amd_gpu_mems, size=model_size)
|
157
|
+
else:
|
158
|
+
gpu_backend = random.choice(list(backends))
|
159
|
+
num_workers = _get_num_workers(
|
160
|
+
memory_values=amd_gpu_mems if gpu_backend == "rocm" else nvidia_gpu_mems,
|
161
|
+
size=model_size
|
162
|
+
)
|
163
|
+
# populate selected template
|
164
|
+
mapping[model_id][gpu_backend]["values"]["workers"] = num_workers
|
165
|
+
mapping[model_id][gpu_backend]["values"]["pipeline_parallel_size"] = num_workers
|
166
|
+
|
167
|
+
return mapping[model_id][gpu_backend]
|
168
|
+
return None
|
169
|
+
|
170
|
+
|
108
171
|
def set_schedulable(schedulable, node_names):
|
109
172
|
"""
|
110
173
|
Delete job in the cluster
|
@@ -545,7 +608,7 @@ def check_token(token, public=False):
|
|
545
608
|
if public:
|
546
609
|
if data[PUBLIC_LOCATION_KEY] is None:
|
547
610
|
raise ValueError("Token is not valid for public pools. Did you start the cluster with a public_location?")
|
548
|
-
return {"status": True}
|
611
|
+
return {"status": True, "data": data}
|
549
612
|
except Exception as e:
|
550
613
|
return {"error": str(e)}
|
551
614
|
|
@@ -671,7 +734,8 @@ def join_pool(
|
|
671
734
|
num_gpus=None,
|
672
735
|
node_name=None,
|
673
736
|
ip_address=None,
|
674
|
-
target_platform="amd64"
|
737
|
+
target_platform="amd64",
|
738
|
+
mtu="1420"
|
675
739
|
):
|
676
740
|
compatibility = check_worker_compatibility()
|
677
741
|
if len(compatibility["issues"]) > 0:
|
@@ -714,6 +778,7 @@ def join_pool(
|
|
714
778
|
pool_token=kalavai_token,
|
715
779
|
num_gpus=num_gpus,
|
716
780
|
vpn_token=public_location,
|
781
|
+
mtu=mtu,
|
717
782
|
node_name=node_name,
|
718
783
|
node_labels=node_labels)
|
719
784
|
|
@@ -763,6 +828,7 @@ def create_pool(
|
|
763
828
|
token_mode: TokenType=TokenType.USER,
|
764
829
|
num_gpus: int=-1,
|
765
830
|
node_name: str=None,
|
831
|
+
mtu: str=None,
|
766
832
|
apps: list=[]
|
767
833
|
):
|
768
834
|
|
@@ -794,6 +860,7 @@ def create_pool(
|
|
794
860
|
ip_address = config_values["server"]["ip_address"] if ip_address is None else ip_address
|
795
861
|
location = config_values["server"]["location"] if location is None else location
|
796
862
|
target_platform = config_values["server"]["platform"] if target_platform is None else target_platform
|
863
|
+
mtu = config_values["server"]["mtu"] if mtu is None else mtu
|
797
864
|
app_values = config_values["core"]
|
798
865
|
post_config_values = config_values["pool"]
|
799
866
|
deploy_apps = {
|
@@ -805,6 +872,8 @@ def create_pool(
|
|
805
872
|
return {"error": f"Error when loading pool config. Missing format? {str(e)}"}
|
806
873
|
|
807
874
|
# Generate docker compose recipe
|
875
|
+
if ip_address is None:
|
876
|
+
ip_address = "0.0.0.0"
|
808
877
|
generate_compose_config(
|
809
878
|
target_platform=target_platform,
|
810
879
|
role="server",
|
@@ -812,7 +881,8 @@ def create_pool(
|
|
812
881
|
node_ip_address=ip_address,
|
813
882
|
num_gpus=num_gpus,
|
814
883
|
node_name=node_name,
|
815
|
-
node_labels=node_labels
|
884
|
+
node_labels=node_labels,
|
885
|
+
mtu=mtu
|
816
886
|
)
|
817
887
|
|
818
888
|
# start server
|
kalavai_client/env.py
CHANGED
@@ -56,6 +56,7 @@ USER_WORKSPACE_TEMPLATE = resource_path("kalavai_client/assets/user_workspace.ya
|
|
56
56
|
DEFAULT_USER_WORKSPACE_VALUES = resource_path("kalavai_client/assets/user_workspace_values.yaml")
|
57
57
|
POOL_CONFIG_TEMPLATE = resource_path("kalavai_client/assets/pool_config_template.yaml")
|
58
58
|
POOL_CONFIG_DEFAULT_VALUES = resource_path("kalavai_client/assets/pool_config_values.yaml")
|
59
|
+
MODEL_DEPLOYMENT_VALUES_MAPPING = resource_path("kalavai_client/assets/model_deployment_values.yaml")
|
59
60
|
# user specific config files
|
60
61
|
USER_TEMPLATES_FOLDER = user_path("templates", create_path=True)
|
61
62
|
USER_LOCAL_SERVER_FILE = user_path(".server")
|
kalavai_client/utils.py
CHANGED
@@ -129,7 +129,7 @@ def extract_auth_token(headers):
|
|
129
129
|
return {"error": str(e)}
|
130
130
|
|
131
131
|
|
132
|
-
def generate_compose_config(role, node_name, target_platform="amd64", write_to_file=True, node_ip_address="0.0.0.0", num_gpus=0, node_labels=None, pool_ip=None, vpn_token=None, pool_token=None):
|
132
|
+
def generate_compose_config(role, node_name, mtu="1420", target_platform="amd64", write_to_file=True, node_ip_address="0.0.0.0", num_gpus=0, node_labels=None, pool_ip=None, vpn_token=None, pool_token=None):
|
133
133
|
|
134
134
|
if node_labels is not None:
|
135
135
|
node_labels = " ".join([f"--node-label {key}={value}" for key, value in node_labels.items()])
|
@@ -140,6 +140,7 @@ def generate_compose_config(role, node_name, target_platform="amd64", write_to_f
|
|
140
140
|
"service_name": DEFAULT_CONTAINER_NAME,
|
141
141
|
"vpn": vpn_token is not None,
|
142
142
|
"vpn_name": DEFAULT_VPN_CONTAINER_NAME,
|
143
|
+
"mtu": mtu,
|
143
144
|
"node_ip_address": node_ip_address,
|
144
145
|
"pool_ip": pool_ip,
|
145
146
|
"pool_token": pool_token,
|
@@ -1,20 +1,21 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: kalavai-client
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.5
|
4
4
|
Summary: Client app for kalavai platform
|
5
|
-
License: Apache-2.0
|
5
|
+
License-Expression: Apache-2.0
|
6
|
+
License-File: LICENSE
|
6
7
|
Keywords: LLM,platform
|
7
8
|
Author: Carlos Fernandez Musoles
|
8
9
|
Author-email: carlos@kalavai.net
|
9
10
|
Maintainer: Carlos Fernandez Musoles
|
10
11
|
Maintainer-email: carlos@kalavai.net
|
11
12
|
Requires-Python: >=3.10
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
14
14
|
Classifier: Programming Language :: Python :: 3.10
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
18
19
|
Provides-Extra: dev
|
19
20
|
Requires-Dist: Pillow (==10.3.0)
|
20
21
|
Requires-Dist: arguably (>=1.2.5)
|
@@ -47,7 +48,9 @@ Description-Content-Type: text/markdown
|
|
47
48
|
|
48
49
|
</div>
|
49
50
|
|
50
|
-
⭐⭐⭐ **Kalavai platform is open source, and free to use in both commercial and non-commercial purposes. If you find it useful, consider supporting us by [giving a star to our GitHub project](https://github.com/kalavai-net/kalavai-client), joining our [discord channel](https://discord.gg/YN6ThTJKbM) and follow our [Substack](https://kalavainet.substack.com/).**
|
51
|
+
<!-- ⭐⭐⭐ **Kalavai platform is open source, and free to use in both commercial and non-commercial purposes. If you find it useful, consider supporting us by [giving a star to our GitHub project](https://github.com/kalavai-net/kalavai-client), joining our [discord channel](https://discord.gg/YN6ThTJKbM) and follow our [Substack](https://kalavainet.substack.com/).** -->
|
52
|
+
|
53
|
+
### ⭐⭐⭐ Kalavai is offering GPU and other resources to interesting Open Source projects that want to push the envelope but are struggling to fund computing resources. If you are a research lab wanting to do research on LLMs, or a small startup trying to beat the tech giants with frugal models, we want to help [Apply here](https://form.typeform.com/to/C1SFzEdK)
|
51
54
|
|
52
55
|
|
53
56
|
# Kalavai: a platform to self-host AI on easy mode
|
@@ -0,0 +1,25 @@
|
|
1
|
+
kalavai_client/__init__.py,sha256=2yNV33mxa4mw0NRZdX1rF9R0X_uQaQl59WtFaMqS_ss,22
|
2
|
+
kalavai_client/__main__.py,sha256=WQUfxvRsBJH5gsCJg8pLz95QnZIj7Ol8psTO77m0QE0,73
|
3
|
+
kalavai_client/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
+
kalavai_client/assets/apps.yaml,sha256=z5lLrBbR8KVP5Ou3pbD6cELYWATs9VJuRu-PPe1GMNk,7007
|
5
|
+
kalavai_client/assets/default_pool_config.yaml,sha256=FLfT0i-xPgEZhleTOZmfyFYrB9fAEMOmZ0YGLyJr0OA,1879
|
6
|
+
kalavai_client/assets/docker-compose-gui.yaml,sha256=OAVO0ohaCpDB9FGeih0yAbVNwUfDtaCzssZ25uiuJyA,787
|
7
|
+
kalavai_client/assets/docker-compose-template.yaml,sha256=8giwNUVbVGxF_YppNMIsS7evWZ8qb4n2enK22u-x6Pk,1920
|
8
|
+
kalavai_client/assets/model_deployment_values.yaml,sha256=PKD9DGJnRRwYfk6pO4cmGN9gIgylHX3IFW2sDweEGdU,1698
|
9
|
+
kalavai_client/assets/nginx.conf,sha256=drVVCg8GHucz7hmt_BI6giAhK92OV71257NTs3LthwM,225
|
10
|
+
kalavai_client/assets/pool_config_template.yaml,sha256=MhBZQsEMKrBgbUVSKgIGmXWhybeGKG6l5XvJb38y5GI,577
|
11
|
+
kalavai_client/assets/user_workspace.yaml,sha256=wDvlMYknOPABAEo0dsQwU7bac8iubjAG9tdkFbJZ5Go,476
|
12
|
+
kalavai_client/assets/user_workspace_values.yaml,sha256=G0HOzQUxrDMCwuW9kbWUZaKMzDDPVwDwzBHCL2Xi2ZM,542
|
13
|
+
kalavai_client/auth.py,sha256=EB3PMvKUn5_KAQkezkEHEt-OMZXyfkZguIQlUFkEHcA,3243
|
14
|
+
kalavai_client/bridge_api.py,sha256=6NGRIbu3CtWyT75XCFKkLSfllF54vGJmYBjnX9qiWX8,27657
|
15
|
+
kalavai_client/bridge_models.py,sha256=bq6vQNTI1py7e_1YgnBZhorFsAKoBqBVN7nRukCuQRE,2960
|
16
|
+
kalavai_client/cli.py,sha256=7EdEHjJxoS0lgmWFyT72k7rl3-qJ7ODz9ju_wZGYB1I,48312
|
17
|
+
kalavai_client/cluster.py,sha256=Z2PIXbZuSAv9xmw-MyZP1M41BpVMpirLzG51bqGA-zc,13548
|
18
|
+
kalavai_client/core.py,sha256=BUlCOeQnXTAqwjD4rxWIshk9Sf_s-QJy9UB6cUbcECo,38906
|
19
|
+
kalavai_client/env.py,sha256=0L5gfEo5KY8gflrW-rSADx10ffDa-8gXmmrGWztKUd8,3099
|
20
|
+
kalavai_client/utils.py,sha256=L0FQJT8EucabPAbxGwzMqeawJdj4wTZqmmZ0OdsyVwM,13470
|
21
|
+
kalavai_client-0.7.5.dist-info/METADATA,sha256=u04xcVwDMzNCp-xU_6TE791B5xQlSc2jnqnzRB587vI,13175
|
22
|
+
kalavai_client-0.7.5.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
23
|
+
kalavai_client-0.7.5.dist-info/entry_points.txt,sha256=9T6D45gxwzfVbglMm1r6XPdXuuZdHfy_7fCeu2jUphc,50
|
24
|
+
kalavai_client-0.7.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
25
|
+
kalavai_client-0.7.5.dist-info/RECORD,,
|
@@ -1,24 +0,0 @@
|
|
1
|
-
kalavai_client/__init__.py,sha256=HscQOf2j1ZGqC0JGDTElyJgW41f0ffRcRAniWr0qnU4,22
|
2
|
-
kalavai_client/__main__.py,sha256=WQUfxvRsBJH5gsCJg8pLz95QnZIj7Ol8psTO77m0QE0,73
|
3
|
-
kalavai_client/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
kalavai_client/assets/apps.yaml,sha256=RPUCkp1eMz_TSo2tUwF6OR1K12M4pEsBiYTSPft_8oE,7007
|
5
|
-
kalavai_client/assets/default_pool_config.yaml,sha256=zfzefofkG9rld9OxSFWbvcVGkz5TNRq0mw6M8X0tVYA,1865
|
6
|
-
kalavai_client/assets/docker-compose-gui.yaml,sha256=OAVO0ohaCpDB9FGeih0yAbVNwUfDtaCzssZ25uiuJyA,787
|
7
|
-
kalavai_client/assets/docker-compose-template.yaml,sha256=vW7GhOl_PaUodehJk8qajOlE0deZXrPc7qizg5SeYyc,1859
|
8
|
-
kalavai_client/assets/nginx.conf,sha256=drVVCg8GHucz7hmt_BI6giAhK92OV71257NTs3LthwM,225
|
9
|
-
kalavai_client/assets/pool_config_template.yaml,sha256=MhBZQsEMKrBgbUVSKgIGmXWhybeGKG6l5XvJb38y5GI,577
|
10
|
-
kalavai_client/assets/user_workspace.yaml,sha256=wDvlMYknOPABAEo0dsQwU7bac8iubjAG9tdkFbJZ5Go,476
|
11
|
-
kalavai_client/assets/user_workspace_values.yaml,sha256=G0HOzQUxrDMCwuW9kbWUZaKMzDDPVwDwzBHCL2Xi2ZM,542
|
12
|
-
kalavai_client/auth.py,sha256=EB3PMvKUn5_KAQkezkEHEt-OMZXyfkZguIQlUFkEHcA,3243
|
13
|
-
kalavai_client/bridge_api.py,sha256=0TvAGgsyfMkbcVqoPKsjhXQLo06WetBH93mZH-pOM7U,26921
|
14
|
-
kalavai_client/bridge_models.py,sha256=bq6vQNTI1py7e_1YgnBZhorFsAKoBqBVN7nRukCuQRE,2960
|
15
|
-
kalavai_client/cli.py,sha256=JDzBZF63S4GGiII47QWbPgKPlYP2mNDcrucj9s-QMUI,47968
|
16
|
-
kalavai_client/cluster.py,sha256=Z2PIXbZuSAv9xmw-MyZP1M41BpVMpirLzG51bqGA-zc,13548
|
17
|
-
kalavai_client/core.py,sha256=-YITkLcwhkwJLU1Z-I9yEW_e4QVgt8-sQ8A0_uMW7f4,36184
|
18
|
-
kalavai_client/env.py,sha256=Uu4ojOsssATfKAC4dKMbR3_kc6hRN6w9ZRsaC7DvzAo,2997
|
19
|
-
kalavai_client/utils.py,sha256=1mz-dzoJhZ9GJKU7jiGYBC1tP37SXHvxToMqqEir8R0,13438
|
20
|
-
kalavai_client-0.7.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
21
|
-
kalavai_client-0.7.3.dist-info/METADATA,sha256=cJRr0KCUg2V20j1laBYiaGKknySVzDCOnCU781C3nWo,12775
|
22
|
-
kalavai_client-0.7.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
23
|
-
kalavai_client-0.7.3.dist-info/entry_points.txt,sha256=9T6D45gxwzfVbglMm1r6XPdXuuZdHfy_7fCeu2jUphc,50
|
24
|
-
kalavai_client-0.7.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|