Skip to content

Commit

Permalink
Merge pull request #91 from bothub-it/staging
Browse files Browse the repository at this point in the history
Update master from staging
  • Loading branch information
lucasagra authored May 20, 2021
2 parents 7951232 + 989504c commit 529d8f0
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 40 deletions.
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ lint = "flake8"
[packages]
raven = "==6.10.0"
requests = "==2.20.1"
bothub_backend = {ref = "1.0.13-hotfix",git = "https://github.com/Ilhasoft/bothub-backend"}
bothub_backend = {ref = "1.0.20",git = "https://github.com/Ilhasoft/bothub-backend"}
kombu = "==4.6.11"
celery = "==4.4.0"
gunicorn = "==19.9.0"
Expand Down
5 changes: 3 additions & 2 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

104 changes: 73 additions & 31 deletions bothub_nlp_api/handlers/evaluate.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,66 @@
EVALUATE_STATUS_FAILED = "failed"


def crossvalidation_evaluate_handler(
authorization, language, repository_version=None
):
if language and (
language not in settings.SUPPORTED_LANGUAGES.keys()
and language not in DEFAULT_LANGS_PRIORITY.keys()
):
raise ValidationError("Language '{}' not supported by now.".format(language))

repository_authorization = get_repository_authorization(authorization)
if not repository_authorization:
raise AuthorizationIsRequired()

try:
update = backend().request_backend_start_automatic_evaluate(
repository_authorization, repository_version, language
)
except Exception as err:
print(err)
update = {}

if not update.get("can_run_automatic_evaluate"):
raise ValidationError("Validation error")

model = get_language_model(update)

try:
job_id = f'bothub_{settings.ENVIRONMENT}_evaluate_{update.get("repository_version_language_id")}_{language}_{str(int(time.time()))}'
send_job_train_ai_platform(
jobId=job_id,
repository_version=str(update.get("repository_version_language_id")),
by_id=str(update.get("user_id")),
repository_authorization=str(repository_authorization),
language=language,
type_model=model,
operation="evaluate",
)
backend().request_backend_save_queue_id(
update_id=str(update.get("repository_version_language_id")),
repository_authorization=str(repository_authorization),
task_id=job_id,
from_queue=0,
type_processing=2,
)
evaluate_report = {
"language": language,
"status": EVALUATE_STATUS_PROCESSING,
"repository_version": update.get("repository_version_language_id"),
"evaluate_id": None,
"evaluate_version": None,
"cross_validation": True,
}
except Exception as e:
evaluate_report = {"status": EVALUATE_STATUS_FAILED, "error": str(e)}

return evaluate_report


def evaluate_handler(
authorization, language, repository_version=None, cross_validation=False
authorization, language, repository_version=None
):
if language and (
language not in settings.SUPPORTED_LANGUAGES.keys()
Expand All @@ -43,36 +101,20 @@ def evaluate_handler(

try:
evaluate = None
if cross_validation is False:
evaluate_task = celery_app.send_task(
TASK_NLU_EVALUATE_UPDATE,
args=[
update.get("repository_version"),
update.get("user_id"),
repository_authorization,
cross_validation,
],
queue=queue_name(update.get("language"), ACTION_EVALUATE, model),
)
evaluate_task.wait()
evaluate = evaluate_task.result
else:
job_id = f'bothub_{settings.ENVIRONMENT}_evaluate_{str(update.get("repository_version"))}_{language}_{str(int(time.time()))}'
send_job_train_ai_platform(
jobId=job_id,
repository_version=str(update.get("repository_version")),
by_id=str(update.get("user_id")),
repository_authorization=str(repository_authorization),
language=language,
type_model=model,
operation="evaluate",
)
backend().request_backend_save_queue_id(
update_id=str(update.get("repository_version")),
repository_authorization=str(repository_authorization),
task_id=job_id,
from_queue=0,
)
cross_validation = False
evaluate_task = celery_app.send_task(
TASK_NLU_EVALUATE_UPDATE,
args=[
repository_version,
update.get("repository_version"), # repository_version_language_id
repository_authorization,
cross_validation,
update.get("language")
],
queue=queue_name(update.get("language"), ACTION_EVALUATE, model),
)
evaluate_task.wait()
evaluate = evaluate_task.result

evaluate_report = {
"language": language,
Expand Down
1 change: 1 addition & 0 deletions bothub_nlp_api/handlers/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ def train_handler(authorization, repository_version=None, language=None):
repository_authorization=str(repository_authorization),
task_id=job_id,
from_queue=0,
type_processing=0,
)
languages_report[update.get("language")] = {"status": TRAIN_STATUS_PROCESSING}

Expand Down
15 changes: 10 additions & 5 deletions bothub_nlp_api/routers/v2.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from fastapi import Depends, APIRouter, Header, HTTPException
from starlette.requests import Request

from bothub_nlp_api.handlers import evaluate, task_queue
from bothub_nlp_api.handlers import evaluate
from bothub_nlp_api.handlers import task_queue
from bothub_nlp_api.handlers import parse
from bothub_nlp_api.handlers import debug_parse
from bothub_nlp_api.handlers import sentence_suggestion
Expand Down Expand Up @@ -83,7 +84,6 @@ async def sentence_suggestion_post_handler(item: SentenceSuggestionRequest,):
item.language,
item.n_sentences_to_generate,
item.percentage_to_replace,
item.intent,
)


Expand Down Expand Up @@ -188,9 +188,14 @@ async def evaluate_handler(
request: Request = Depends(AuthorizationRequired()),
Authorization: str = Header(..., description="Bearer your_key"),
):
result = evaluate.evaluate_handler(
Authorization, item.language, item.repository_version, item.cross_validation
)
if item.cross_validation:
result = evaluate.crossvalidation_evaluate_handler(
Authorization, item.language, item.repository_version
)
else:
result = evaluate.evaluate_handler(
Authorization, item.language, item.repository_version
)
if result.get("status") and result.get("error"):
raise HTTPException(status_code=400, detail=result)
return result
Expand Down
11 changes: 10 additions & 1 deletion bothub_nlp_api/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,11 @@ def cast_supported_languages(i):
"gs://poc-training-ai-platform/bothub-nlp-ai-platform/bothub-nlp-ai-platform-0.1.tar.gz"
],
),
BOTHUB_GOOGLE_AI_PLATFORM_JOB_TIMEOUT=(int, None)
BOTHUB_GOOGLE_AI_PLATFORM_JOB_TIMEOUT=(int, None),
BOTHUB_NLP_AWS_S3_BUCKET_NAME=(str, None),
BOTHUB_NLP_AWS_ACCESS_KEY_ID=(str, None),
BOTHUB_NLP_AWS_SECRET_ACCESS_KEY=(str, None),
BOTHUB_NLP_AWS_REGION_NAME=(str, None)
)

ENVIRONMENT = env.str("ENVIRONMENT")
Expand Down Expand Up @@ -78,3 +82,8 @@ def cast_supported_languages(i):
)

BOTHUB_GOOGLE_AI_PLATFORM_JOB_TIMEOUT = env.int("BOTHUB_GOOGLE_AI_PLATFORM_JOB_TIMEOUT")

BOTHUB_NLP_AWS_S3_BUCKET_NAME = env.str("BOTHUB_NLP_AWS_S3_BUCKET_NAME")
BOTHUB_NLP_AWS_ACCESS_KEY_ID = env.str("BOTHUB_NLP_AWS_ACCESS_KEY_ID")
BOTHUB_NLP_AWS_SECRET_ACCESS_KEY = env.str("BOTHUB_NLP_AWS_SECRET_ACCESS_KEY")
BOTHUB_NLP_AWS_REGION_NAME = env.str("BOTHUB_NLP_AWS_REGION_NAME")
12 changes: 12 additions & 0 deletions bothub_nlp_api/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,18 @@ def send_job_train_ai_platform(

if type_model is not None:
args.extend(["--AIPLATFORM_LANGUAGE_MODEL", type_model])

if operation == "evaluate":
args.extend(
[
"--BOTHUB_NLP_AWS_S3_BUCKET_NAME", settings.BOTHUB_NLP_AWS_S3_BUCKET_NAME,
"--BOTHUB_NLP_AWS_ACCESS_KEY_ID", settings.BOTHUB_NLP_AWS_ACCESS_KEY_ID,
"--BOTHUB_NLP_AWS_SECRET_ACCESS_KEY", settings.BOTHUB_NLP_AWS_SECRET_ACCESS_KEY,
"--BOTHUB_NLP_AWS_REGION_NAME", settings.BOTHUB_NLP_AWS_REGION_NAME,
]
)


training_inputs = {
"scaleTier": "CUSTOM",
"masterType": "standard_gpu",
Expand Down

0 comments on commit 529d8f0

Please sign in to comment.