I am trying to run serve.run
in my test method but when the test runs, it throws an error in this part of the code:
serve.run(RayFastApiWrapper.bind(), route_prefix=settings.app_root_url)
FastApiWrapper looks like this:
<code>@serve.deployment(ray_actor_options={"num_gpus": 1, "num_cpus": 8})
@serve.ingress(app)
class RayFastApiWrapper:
pass
</code>
<code>@serve.deployment(ray_actor_options={"num_gpus": 1, "num_cpus": 8})
@serve.ingress(app)
class RayFastApiWrapper:
pass
</code>
@serve.deployment(ray_actor_options={"num_gpus": 1, "num_cpus": 8})
@serve.ingress(app)
class RayFastApiWrapper:
pass
And the module causing the exception seems to be in module ray/_private/accelerators/nvidia_gpu.py
StackTrace:
<code>serve.run(RayFastApiWrapper.bind(), route_prefix=settings.app_root_url)
/home/user/.local/lib/python3.9/site-packages/ray/serve/api.py:578: in run
handle = _run(
/home/user/.local/lib/python3.9/site-packages/ray/serve/api.py:484: in _run
client = _private_api.serve_start(
/home/user/.local/lib/python3.9/site-packages/ray/serve/_private/api.py:257: in serve_start
client = _get_global_client(_health_check_controller=True)
/home/user/.local/lib/python3.9/site-packages/ray/serve/context.py:87: in _get_global_client
return _connect(raise_if_no_controller_running)
/home/user/.local/lib/python3.9/site-packages/ray/serve/context.py:132: in _connect
ray.init(namespace=SERVE_NAMESPACE)
/home/user/.local/lib/python3.9/site-packages/ray/_private/client_mode_hook.py:103: in wrapper
return func(*args, **kwargs)
/home/user/.local/lib/python3.9/site-packages/ray/_private/worker.py:1642: in init
_global_node = ray._private.node.Node(
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:336: in __init__
self.start_ray_processes()
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:1396: in start_ray_processes
resource_spec = self.get_resource_spec()
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:571: in get_resource_spec
self._resource_spec = ResourceSpec(
/home/user/.local/lib/python3.9/site-packages/ray/_private/resource_spec.py:215: in resolve
accelerator_manager.get_current_node_accelerator_type()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
@staticmethod
def get_current_node_accelerator_type() -> Optional[str]:
import ray._private.thirdparty.pynvml as pynvml
try:
pynvml.nvmlInit()
except pynvml.NVMLError:
return None # pynvml init failed
device_count = pynvml.nvmlDeviceGetCount()
cuda_device_type = None
if device_count > 0:
handle = pynvml.nvmlDeviceGetHandleByIndex(0)
device_name = pynvml.nvmlDeviceGetName(handle)
if isinstance(device_name, bytes):
> device_name = device_name.decode("utf-8")
E UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 0: invalid start byte
</code>
<code>serve.run(RayFastApiWrapper.bind(), route_prefix=settings.app_root_url)
/home/user/.local/lib/python3.9/site-packages/ray/serve/api.py:578: in run
handle = _run(
/home/user/.local/lib/python3.9/site-packages/ray/serve/api.py:484: in _run
client = _private_api.serve_start(
/home/user/.local/lib/python3.9/site-packages/ray/serve/_private/api.py:257: in serve_start
client = _get_global_client(_health_check_controller=True)
/home/user/.local/lib/python3.9/site-packages/ray/serve/context.py:87: in _get_global_client
return _connect(raise_if_no_controller_running)
/home/user/.local/lib/python3.9/site-packages/ray/serve/context.py:132: in _connect
ray.init(namespace=SERVE_NAMESPACE)
/home/user/.local/lib/python3.9/site-packages/ray/_private/client_mode_hook.py:103: in wrapper
return func(*args, **kwargs)
/home/user/.local/lib/python3.9/site-packages/ray/_private/worker.py:1642: in init
_global_node = ray._private.node.Node(
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:336: in __init__
self.start_ray_processes()
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:1396: in start_ray_processes
resource_spec = self.get_resource_spec()
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:571: in get_resource_spec
self._resource_spec = ResourceSpec(
/home/user/.local/lib/python3.9/site-packages/ray/_private/resource_spec.py:215: in resolve
accelerator_manager.get_current_node_accelerator_type()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
@staticmethod
def get_current_node_accelerator_type() -> Optional[str]:
import ray._private.thirdparty.pynvml as pynvml
try:
pynvml.nvmlInit()
except pynvml.NVMLError:
return None # pynvml init failed
device_count = pynvml.nvmlDeviceGetCount()
cuda_device_type = None
if device_count > 0:
handle = pynvml.nvmlDeviceGetHandleByIndex(0)
device_name = pynvml.nvmlDeviceGetName(handle)
if isinstance(device_name, bytes):
> device_name = device_name.decode("utf-8")
E UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 0: invalid start byte
</code>
serve.run(RayFastApiWrapper.bind(), route_prefix=settings.app_root_url)
/home/user/.local/lib/python3.9/site-packages/ray/serve/api.py:578: in run
handle = _run(
/home/user/.local/lib/python3.9/site-packages/ray/serve/api.py:484: in _run
client = _private_api.serve_start(
/home/user/.local/lib/python3.9/site-packages/ray/serve/_private/api.py:257: in serve_start
client = _get_global_client(_health_check_controller=True)
/home/user/.local/lib/python3.9/site-packages/ray/serve/context.py:87: in _get_global_client
return _connect(raise_if_no_controller_running)
/home/user/.local/lib/python3.9/site-packages/ray/serve/context.py:132: in _connect
ray.init(namespace=SERVE_NAMESPACE)
/home/user/.local/lib/python3.9/site-packages/ray/_private/client_mode_hook.py:103: in wrapper
return func(*args, **kwargs)
/home/user/.local/lib/python3.9/site-packages/ray/_private/worker.py:1642: in init
_global_node = ray._private.node.Node(
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:336: in __init__
self.start_ray_processes()
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:1396: in start_ray_processes
resource_spec = self.get_resource_spec()
/home/user/.local/lib/python3.9/site-packages/ray/_private/node.py:571: in get_resource_spec
self._resource_spec = ResourceSpec(
/home/user/.local/lib/python3.9/site-packages/ray/_private/resource_spec.py:215: in resolve
accelerator_manager.get_current_node_accelerator_type()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
@staticmethod
def get_current_node_accelerator_type() -> Optional[str]:
import ray._private.thirdparty.pynvml as pynvml
try:
pynvml.nvmlInit()
except pynvml.NVMLError:
return None # pynvml init failed
device_count = pynvml.nvmlDeviceGetCount()
cuda_device_type = None
if device_count > 0:
handle = pynvml.nvmlDeviceGetHandleByIndex(0)
device_name = pynvml.nvmlDeviceGetName(handle)
if isinstance(device_name, bytes):
> device_name = device_name.decode("utf-8")
E UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 0: invalid start byte
I am using ray 2.23.0 and gpustat 1.0. However, seems ray uses its own fork of pynvml, judging from the code in the repo.