[Core] Allow IPv6 in VLLM_HOST_IP with zmq (#8575)
Signed-off-by: Russell Bryant <rbryant@redhat.com>
This commit is contained in:
parent
9b0e3ec970
commit
b05f5c9238
@ -9,11 +9,12 @@ from unittest.mock import patch
|
|||||||
import torch
|
import torch
|
||||||
import torch.distributed as dist
|
import torch.distributed as dist
|
||||||
from torch.distributed import ProcessGroup
|
from torch.distributed import ProcessGroup
|
||||||
|
from zmq import IPV6 # type: ignore
|
||||||
from zmq import SUB, SUBSCRIBE, XPUB, XPUB_VERBOSE, Context # type: ignore
|
from zmq import SUB, SUBSCRIBE, XPUB, XPUB_VERBOSE, Context # type: ignore
|
||||||
|
|
||||||
import vllm.envs as envs
|
import vllm.envs as envs
|
||||||
from vllm.logger import init_logger
|
from vllm.logger import init_logger
|
||||||
from vllm.utils import get_ip, get_open_port
|
from vllm.utils import get_ip, get_open_port, is_valid_ipv6_address
|
||||||
|
|
||||||
VLLM_RINGBUFFER_WARNING_INTERVAL = envs.VLLM_RINGBUFFER_WARNING_INTERVAL
|
VLLM_RINGBUFFER_WARNING_INTERVAL = envs.VLLM_RINGBUFFER_WARNING_INTERVAL
|
||||||
|
|
||||||
@ -214,6 +215,8 @@ class MessageQueue:
|
|||||||
self.remote_socket = context.socket(XPUB)
|
self.remote_socket = context.socket(XPUB)
|
||||||
self.remote_socket.setsockopt(XPUB_VERBOSE, True)
|
self.remote_socket.setsockopt(XPUB_VERBOSE, True)
|
||||||
remote_subscribe_port = get_open_port()
|
remote_subscribe_port = get_open_port()
|
||||||
|
if is_valid_ipv6_address(connect_ip):
|
||||||
|
self.remote_socket.setsockopt(IPV6, 1)
|
||||||
socket_addr = f"tcp://*:{remote_subscribe_port}"
|
socket_addr = f"tcp://*:{remote_subscribe_port}"
|
||||||
self.remote_socket.bind(socket_addr)
|
self.remote_socket.bind(socket_addr)
|
||||||
|
|
||||||
@ -274,6 +277,8 @@ class MessageQueue:
|
|||||||
|
|
||||||
self.remote_socket = context.socket(SUB)
|
self.remote_socket = context.socket(SUB)
|
||||||
self.remote_socket.setsockopt_string(SUBSCRIBE, "")
|
self.remote_socket.setsockopt_string(SUBSCRIBE, "")
|
||||||
|
if is_valid_ipv6_address(handle.connect_ip):
|
||||||
|
self.remote_socket.setsockopt(IPV6, 1)
|
||||||
socket_addr = f"tcp://{handle.connect_ip}:{handle.remote_subscribe_port}"
|
socket_addr = f"tcp://{handle.connect_ip}:{handle.remote_subscribe_port}"
|
||||||
logger.debug("Connecting to %s", socket_addr)
|
logger.debug("Connecting to %s", socket_addr)
|
||||||
self.remote_socket.connect(socket_addr)
|
self.remote_socket.connect(socket_addr)
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import datetime
|
|||||||
import enum
|
import enum
|
||||||
import gc
|
import gc
|
||||||
import inspect
|
import inspect
|
||||||
|
import ipaddress
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import socket
|
import socket
|
||||||
@ -533,6 +534,14 @@ def get_ip() -> str:
|
|||||||
return "0.0.0.0"
|
return "0.0.0.0"
|
||||||
|
|
||||||
|
|
||||||
|
def is_valid_ipv6_address(address: str) -> bool:
|
||||||
|
try:
|
||||||
|
ipaddress.IPv6Address(address)
|
||||||
|
return True
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def get_distributed_init_method(ip: str, port: int) -> str:
|
def get_distributed_init_method(ip: str, port: int) -> str:
|
||||||
# Brackets are not permitted in ipv4 addresses,
|
# Brackets are not permitted in ipv4 addresses,
|
||||||
# see https://github.com/python/cpython/issues/103848
|
# see https://github.com/python/cpython/issues/103848
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user