Spaces:
Runtime error
Runtime error
import subprocess | |
import sys | |
import time | |
# Function to install necessary dependencies | |
def install_dependencies(): | |
try: | |
print("Installing Petals...") | |
subprocess.check_call([sys.executable, "sudo", "-H", "pip", "install", "--user", "git+https://github.com/bigscience-workshop/petals"]) | |
print("Petals installation successful.") | |
except subprocess.CalledProcessError: | |
print("Error during Petals installation.") | |
sys.exit(1) | |
# Function to start the Petals server | |
def start_petal_server(model_name, port=31337): | |
try: | |
command = [ | |
sys.executable, | |
"-m", | |
"petals.cli.run_server", | |
model_name, | |
"--port", | |
str(port) | |
] | |
server_process = subprocess.Popen(command) | |
print(f"Petals server started for model {model_name} on port {port}.") | |
return server_process | |
except Exception as e: | |
print(f"Error starting Petals server: {e}") | |
sys.exit(1) | |
# Function to keep the server alive | |
def keep_server_alive(server_process): | |
try: | |
while True: | |
time.sleep(60) # Check every minute | |
if server_process.poll() is not None: | |
print("Petals server has stopped unexpectedly.") | |
break | |
except KeyboardInterrupt: | |
print("Keep-alive interrupted. Terminating server...") | |
server_process.terminate() | |
server_process.wait() | |
print("Petals server terminated.") | |
if __name__ == "__main__": | |
# Define the model name and port | |
model_name = "deca-ai/2-mini" | |
port = 31337 | |
# Install dependencies (optional, but should be included for Docker consistency) | |
install_dependencies() | |
# Start the Petals server | |
server_process = start_petal_server(model_name, port) | |
# Keep the server alive | |
keep_server_alive(server_process) | |