Пример #1
0
    def __init__(self,
                 db=None,
                 container_manager=None,
                 var_autoforward=ENVIRONMENT_VARIABLES_AUTOFORWARD):
        db = db or Database()
        container_manager: ContainerManager = container_manager or DockerSwarmContainerManager(
        )

        # Ensure that environment variable exists, failing fast
        for x in var_autoforward:
            os.environ[x]
        self._var_autoforward = var_autoforward

        self._data_dir_path = os.environ['DATA_DIR_PATH']
        self._logs_dir_path = os.environ['LOGS_DIR_PATH']
        self._params_dir_path = os.environ['PARAMS_DIR_PATH']
        self._host_workdir_path = os.environ['HOST_WORKDIR_PATH']
        self._docker_workdir_path = os.environ['DOCKER_WORKDIR_PATH']
        self._predictor_image = '{}:{}'.format(
            os.environ['RAFIKI_IMAGE_PREDICTOR'], os.environ['RAFIKI_VERSION'])
        self._predictor_port = os.environ['PREDICTOR_PORT']
        self._rafiki_addr = os.environ['RAFIKI_ADDR']
        self._app_mode = os.environ['APP_MODE']

        self._db = db
        self._container_manager = container_manager
Пример #2
0
    def __init__(self, db=None, container_manager=None):
        if db is None:
            db = Database()
        if container_manager is None:
            container_manager = DockerSwarmContainerManager()

        self._postgres_host = os.environ['POSTGRES_HOST']
        self._postgres_port = os.environ['POSTGRES_PORT']
        self._postgres_user = os.environ['POSTGRES_USER']
        self._postgres_password = os.environ['POSTGRES_PASSWORD']
        self._postgres_db = os.environ['POSTGRES_DB']
        self._redis_host = os.environ['REDIS_HOST']
        self._redis_port = os.environ['REDIS_PORT']
        self._admin_host = os.environ['ADMIN_HOST']
        self._admin_host = os.environ['ADMIN_HOST']
        self._admin_port = os.environ['ADMIN_PORT']
        self._advisor_host = os.environ['ADVISOR_HOST']
        self._advisor_port = os.environ['ADVISOR_PORT']
        self._data_workdir = os.environ['DATA_WORKDIR_PATH']
        self._logs_workdir = os.environ['LOGS_WORKDIR_PATH']
        self._data_docker_workdir = os.environ['DATA_DOCKER_WORKDIR_PATH']
        self._logs_docker_workdir = os.environ['LOGS_DOCKER_WORKDIR_PATH']
        self._predictor_image = '{}:{}'.format(
            os.environ['RAFIKI_IMAGE_PREDICTOR'], os.environ['RAFIKI_VERSION'])
        self._predictor_port = os.environ['PREDICTOR_PORT']
        self._rafiki_addr = os.environ['RAFIKI_ADDR']

        self._db = db
        self._container_manager = container_manager
Пример #3
0
    def __init__(self, service_id, db=None):
        if db is None:
            db = Database()

        self._service_id = service_id
        self._db = db
        self._trial_id = None
        self._client = self._make_client()
Пример #4
0
    def __init__(self, service_id, db=Database(), cache=Cache()):
        self._service_id = service_id
        self._db = db
        self._cache = cache

        with self._db:
            (self._inference_job_id, self._worker_to_predict_label_mapping, self._task) \
                = self._read_predictor_info()
Пример #5
0
    def __init__(self, service_id, db=None, cache=None):
        if db is None: 
            db = Database()
        if cache is None: 
            cache = Cache()

        self._service_id = service_id
        self._db = db
        self._cache = cache
Пример #6
0
    def __init__(self, db=Database(), container_manager=DockerSwarmContainerManager()):
        self._base_worker_image = '{}:{}'.format(os.environ['RAFIKI_IMAGE_WORKER'],
                                                os.environ['RAFIKI_VERSION'])

        self._db = db
        self._services_manager = ServicesManager(db, container_manager)
        
        with self._db:
            self._seed_users()
Пример #7
0
    def __init__(self, db=None, container_manager=None):
        if db is None:
            db = Database()
        if container_manager is None:
            container_manager = DockerSwarmContainerManager()

        self._base_worker_image = '{}:{}'.format(
            os.environ['RAFIKI_IMAGE_WORKER'], os.environ['RAFIKI_VERSION'])

        self._db = db
        self._services_manager = ServicesManager(db, container_manager)
Пример #8
0
    def __init__(self, service_id, worker_id, db=None):
        if db is None:
            db = Database()

        self._service_id = service_id
        self._db = db
        self._worker_id = worker_id
        self._trial_id = None
        self._sub_train_job_id = None
        self._client = Client(admin_host=os.environ['ADMIN_HOST'],
                              admin_port=os.environ['ADMIN_PORT'],
                              advisor_host=os.environ['ADVISOR_HOST'],
                              advisor_port=os.environ['ADVISOR_PORT'])
        self._params_root_dir = os.path.join(os.environ['WORKDIR_PATH'],
                                             os.environ['PARAMS_DIR_PATH'])
Пример #9
0
 def __init__(self, service_id, cache=Cache(), db=Database()):
     self._cache = cache
     self._db = db
     self._service_id = service_id
     self._model = None
Пример #10
0
def start_service(service_id, service_type):
    global worker

    # Run install command
    install_command = os.environ.get('WORKER_INSTALL_COMMAND', '')
    exit_code = os.system(install_command)
    if exit_code != 0:
        raise Exception('Install command gave non-zero exit code: {}'.format(
            install_command))

    if service_type == ServiceType.TRAIN:
        from rafiki.worker import TrainWorker
        worker = TrainWorker(service_id)
        worker.start()
    elif service_type == ServiceType.INFERENCE:
        from rafiki.worker import InferenceWorker
        worker = InferenceWorker(service_id)
        worker.start()
    else:
        raise Exception('Invalid service type: {}'.format(service_type))


def end_service(service_id, service_type):
    global worker
    if worker is not None:
        worker.stop()


db = Database()
run_service(db, start_service, end_service)