|
@@ -27,6 +27,7 @@ from exo.inference.tokenizers import resolve_tokenizer
|
|
from exo.orchestration.node import Node
|
|
from exo.orchestration.node import Node
|
|
from exo.models import build_base_shard, get_repo
|
|
from exo.models import build_base_shard, get_repo
|
|
from exo.viz.topology_viz import TopologyViz
|
|
from exo.viz.topology_viz import TopologyViz
|
|
|
|
+from exo.download.hf.hf_helpers import has_hf_home_read_access, has_hf_home_write_access, get_hf_home
|
|
|
|
|
|
# parse args
|
|
# parse args
|
|
parser = argparse.ArgumentParser(description="Initialize GRPC Discovery")
|
|
parser = argparse.ArgumentParser(description="Initialize GRPC Discovery")
|
|
@@ -196,6 +197,18 @@ async def run_model_cli(node: Node, inference_engine: InferenceEngine, model_nam
|
|
async def main():
|
|
async def main():
|
|
loop = asyncio.get_running_loop()
|
|
loop = asyncio.get_running_loop()
|
|
|
|
|
|
|
|
+ # Check HuggingFace directory permissions
|
|
|
|
+ hf_home, has_read, has_write = get_hf_home(), await has_hf_home_read_access(), await has_hf_home_write_access()
|
|
|
|
+ if DEBUG >= 1: print(f"Model storage directory: {hf_home}")
|
|
|
|
+ print(f"{has_read=}, {has_write=}")
|
|
|
|
+ if not has_read or not has_write:
|
|
|
|
+ print(f"""
|
|
|
|
+ WARNING: Limited permissions for model storage directory: {hf_home}.
|
|
|
|
+ This may prevent model downloads from working correctly.
|
|
|
|
+ {"❌ No read access" if not has_read else ""}
|
|
|
|
+ {"❌ No write access" if not has_write else ""}
|
|
|
|
+ """)
|
|
|
|
+
|
|
if not args.models_seed_dir is None:
|
|
if not args.models_seed_dir is None:
|
|
try:
|
|
try:
|
|
await move_models_to_hf(args.models_seed_dir)
|
|
await move_models_to_hf(args.models_seed_dir)
|