ray-embedding 0.13.1__py3-none-any.whl → 0.13.3__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.

Potentially problematic release.


This version of ray-embedding might be problematic. Click here for more details.

@@ -124,5 +124,5 @@ class ModelRouter:
124
124
 
125
125
  async def check_health(self):
126
126
  if self.node_health_tracker:
127
- if await self.node_health_tracker.is_bad_gpu_or_no_tracked_model_on_node.remote(self.node_ip):
128
- raise RuntimeError(f"The node {self.node_ip} is marked bad, or there are no tracked models running on it.")
127
+ if await self.node_health_tracker.is_bad_gpu_or_no_model_replica_on_node.remote(self.node_ip):
128
+ raise RuntimeError(f"The node {self.node_ip} is marked bad, or no model replica running on the node.")
@@ -8,7 +8,7 @@ from ray._private.services import get_node_ip_address
8
8
  from ray.util.state import list_actors
9
9
 
10
10
 
11
- @serve.deployment(autoscaling_config=dict(min_replicas=1, max_replicas=1),
11
+ @serve.deployment(autoscaling_config=dict(min_replicas=0, max_replicas=1),
12
12
  ray_actor_options=dict(num_cpus=0.1))
13
13
  class NodeHealthTracker:
14
14
  """Maintains a list of bad nodes, as reported by replicas that call the report_bad_node func.
@@ -39,12 +39,16 @@ class NodeHealthTracker:
39
39
  )
40
40
 
41
41
  async def is_bad_gpu_node(self, node_ip: str) -> bool:
42
+ self.logger.info(f"Checking if node {node_ip} is marked bad.")
42
43
  with self.lock:
43
- return node_ip in self.bad_gpu_node_ips
44
+ is_bad_gpu_node = node_ip in self.bad_gpu_node_ips
45
+ self.logger.info(f"Node {node_ip} is marked bad: {is_bad_gpu_node}")
46
+ return is_bad_gpu_node
44
47
 
45
- async def is_bad_gpu_or_no_tracked_model_on_node(self, node_ip: str):
48
+ async def is_bad_gpu_or_no_model_replica_on_node(self, node_ip: str):
49
+ self.logger.info(f"Checking if node {node_ip} is marked bad or no model replica running on the node.")
46
50
  return (await self.is_bad_gpu_node(node_ip) or
47
- not await self.is_tracked_model_running_on_node(node_ip))
51
+ not await self.is_model_replica_running_on_node(node_ip))
48
52
 
49
53
  async def check_health(self):
50
54
  """Called periodically by Ray Serve. Used here to clean up stale node IDs."""
@@ -59,12 +63,14 @@ class NodeHealthTracker:
59
63
  except Exception as e:
60
64
  raise RuntimeError(f"An error occurred in check_health during bad node cleanup: {e}")
61
65
 
62
- async def is_tracked_model_running_on_node(self, node_ip: str) -> bool:
66
+ async def is_model_replica_running_on_node(self, node_ip: str) -> bool:
63
67
  """
64
- Return True if there is at least one replica of any of the self.tracked_model_deployments
68
+ Return True if there is at least one replica of the self.tracked_model_deployments
65
69
  running on the specified node_ip.
66
70
  """
67
71
  try:
72
+ self.logger.info(f"Checking if there is at least one replica of tracked_deployments={self.tracked_model_deployments} "
73
+ f"running on node {node_ip}.")
68
74
  target_node_id = next(node["NodeID"] for node in ray.nodes() if node["Alive"] and node["NodeManagerAddress"] == node_ip)
69
75
  assert target_node_id, f"No node found with IP {node_ip}"
70
76
  prefixes = tuple(f"SERVE_REPLICA::{d}" for d in self.tracked_model_deployments)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ray-embedding
3
- Version: 0.13.1
3
+ Version: 0.13.3
4
4
  Summary: Deploy SentenceTransformers embedding models to a ray cluster
5
5
  Author: Crispin Almodovar
6
6
  Author-email:
@@ -0,0 +1,10 @@
1
+ ray_embedding/__init__.py,sha256=YS5LAZfRIwwVvE3C9g7hsauvjgIkqKtHyxkwMFFfAGY,46
2
+ ray_embedding/deploy.py,sha256=2R7bQ7aPc9G8H9KVoemxum6-9YxmlXQogWbhFhuslko,3762
3
+ ray_embedding/dto.py,sha256=lk_LuVQPq3MLIMTMddqHviYXILY6V5dvbzDJuD_D_qc,1573
4
+ ray_embedding/embedding_model.py,sha256=P2xyXCznxXmdQBK6zodOJEMvxGVRMA8Ra3O5Qi7RCh0,6013
5
+ ray_embedding/model_router.py,sha256=fmaeXzaAJeCemzL9nUoXfdCrU-ZaCe_29fx5ayDCTC0,6845
6
+ ray_embedding/node_health.py,sha256=GH_cXYxKJ77mwFrfZgyYfyNetv-_ydAqtxuM42eOI90,4867
7
+ ray_embedding-0.13.3.dist-info/METADATA,sha256=UNj1fh8x9iHFqmQLPcyeGHZxXxdAO9JvHEyPGjGlru0,1074
8
+ ray_embedding-0.13.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
9
+ ray_embedding-0.13.3.dist-info/top_level.txt,sha256=ziCblpJq1YsrryshFqxTRuRMgNuO1_tgvAAkGShATNA,14
10
+ ray_embedding-0.13.3.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- ray_embedding/__init__.py,sha256=YS5LAZfRIwwVvE3C9g7hsauvjgIkqKtHyxkwMFFfAGY,46
2
- ray_embedding/deploy.py,sha256=2R7bQ7aPc9G8H9KVoemxum6-9YxmlXQogWbhFhuslko,3762
3
- ray_embedding/dto.py,sha256=lk_LuVQPq3MLIMTMddqHviYXILY6V5dvbzDJuD_D_qc,1573
4
- ray_embedding/embedding_model.py,sha256=P2xyXCznxXmdQBK6zodOJEMvxGVRMA8Ra3O5Qi7RCh0,6013
5
- ray_embedding/model_router.py,sha256=uHbPqiKuaxUO6mx8pJK19yr83RBiVyfMAB5FkWJl3Gk,6850
6
- ray_embedding/node_health.py,sha256=ZwQFshoMmTDpuCSRW-uixEfwzFrJo8JMTu8L5r8NIjA,4374
7
- ray_embedding-0.13.1.dist-info/METADATA,sha256=NCK8Ks2nDMfDCQ_0PLOX2wkWzgKhE9qqq4QRm_a2nII,1074
8
- ray_embedding-0.13.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
9
- ray_embedding-0.13.1.dist-info/top_level.txt,sha256=ziCblpJq1YsrryshFqxTRuRMgNuO1_tgvAAkGShATNA,14
10
- ray_embedding-0.13.1.dist-info/RECORD,,