refactor install dependencies, default only depencies of hub and datasets

This commit is contained in:
mulin.lyh
2024-06-20 15:24:04 +08:00
parent 16e4012dfa
commit 2652cf3175
9 changed files with 55 additions and 26 deletions

View File

@@ -4,10 +4,8 @@ import os
from argparse import ArgumentParser
from string import Template
import uvicorn
from modelscope.cli.base import CLICommand
from modelscope.server.api_server import add_server_args, get_app
from modelscope.server.api_server import add_server_args, run_server
from modelscope.utils.logger import get_logger
logger = get_logger(log_level=logging.WARNING)
@@ -37,5 +35,4 @@ class ServerCMD(CLICommand):
parser.set_defaults(func=subparser_func)
def execute(self):
app = get_app(self.args)
uvicorn.run(app, host=self.args.host, port=self.args.port)
run_server(self.args)

View File

@@ -0,0 +1,17 @@
# Copyright (c) Alibaba, Inc. and its affiliates.
from typing import TYPE_CHECKING
from modelscope.utils.import_utils import LazyImportModule
if TYPE_CHECKING:
from .api_server import run_server, add_server_args
else:
_import_structure = {'api_server': ['run_server', 'add_server_arg']}
import sys
sys.modules[__name__] = LazyImportModule(
__name__,
globals()['__file__'],
_import_structure,
module_spec=__spec__,
extra_objects={},
)

View File

@@ -1,5 +1,4 @@
from fastapi import APIRouter
from starlette.routing import Route, WebSocketRoute
from modelscope.server.api.routers import health, model_router

View File

@@ -1,28 +1,11 @@
import argparse
import uvicorn
from fastapi import FastAPI
from modelscope.server.api.routers.router import api_router
from modelscope.server.core.event_handlers import (start_app_handler,
stop_app_handler)
def get_app(args) -> FastAPI:
app = FastAPI(
title='modelscope_server',
version='0.1',
debug=True,
swagger_ui_parameters={'tryItOutEnabled': True})
app.state.args = args
app.include_router(api_router)
app.add_event_handler('startup', start_app_handler(app))
app.add_event_handler('shutdown', stop_app_handler(app))
return app
def add_server_args(parser):
def add_server_args(parser: argparse.ArgumentParser):
parser.add_argument(
'--model_id', required=True, type=str, help='The target model id')
parser.add_argument(
@@ -37,7 +20,29 @@ def add_server_args(parser):
help='Use LLMPipeline first for llm models.')
def run_server(args):
import uvicorn
app = get_app(args)
uvicorn.run(app, host=args.host, port=args.port)
def get_app(args):
from fastapi import FastAPI
app = FastAPI(
title='modelscope_server',
version='0.1',
debug=True,
swagger_ui_parameters={'tryItOutEnabled': True})
app.state.args = args
app.include_router(api_router)
app.add_event_handler('startup', start_app_handler(app))
app.add_event_handler('shutdown', stop_app_handler(app))
return app
if __name__ == '__main__':
import uvicorn
parser = argparse.ArgumentParser('modelscope_server')
add_server_args(parser)
args = parser.parse_args()

View File

@@ -5,11 +5,13 @@ import enum
class Fields(object):
""" Names for different application fields
"""
framework = 'framework'
cv = 'cv'
nlp = 'nlp'
audio = 'audio'
multi_modal = 'multi-modal'
science = 'science'
server = 'server'
class CVTasks(object):

View File

@@ -1 +1 @@
-r requirements/framework.txt
-r requirements/hub.txt

4
requirements/hub.txt Normal file
View File

@@ -0,0 +1,4 @@
datasets
requests>=2.25
setuptools
tqdm

View File

@@ -1,4 +1,3 @@
fastapi
requests
sse-starlette
uvicorn

View File

@@ -192,6 +192,12 @@ if __name__ == '__main__':
filed_name = f'audio_{subfiled}'
extra_requires[filed_name], _ = parse_requirements(
f'requirements/audio/{filed_name}.txt')
framework_requires = extra_requires['framework']
del extra_requires['framework']
# add framework dependencies to every field
for field, requires in extra_requires.items():
if field != 'server': # server need install model's field dependencies before.
extra_requires[field] = framework_requires + extra_requires[field]
extra_requires['all'] = all_requires
setup(