Spaces:
Running
Running
import gradio as gr | |
import torch as th | |
import numpy as np | |
from benchmarks import build_env | |
def submit_model(github_username, | |
benchmark, | |
environment, | |
version, | |
training_steps, | |
code_link, | |
model_uploader | |
): | |
avg_episode_rewards = 0 | |
success_msg = f""" | |
INFO: Submitted by {github_username}: | |
INFO: Benchmark: {benchmark} | |
INFO: Environment: {environment} | |
INFO: Version: {version} | |
INFO: Training Steps: {training_steps} | |
INFO: Code Link: {code_link} | |
INFO: Final Score: {avg_episode_rewards} | |
""" | |
username_error_msg = f""" | |
ERROR: The GitHub username should be consistent with the code link! | |
""" | |
model_none_error_msg = f""" | |
ERROR: No model uploaded! | |
""" | |
# check if username is valid | |
if github_username.lower() not in code_link.lower(): | |
return username_error_msg | |
if model_uploader is None: | |
return model_none_error_msg | |
episode_rewards = evaluate_model(model_uploader, benchmark, environment, version) | |
avg_episode_rewards = np.mean(episode_rewards) | |
return success_msg | |
def evaluate_model(model_uploader, benchmark, environment, version): | |
env = build_env(benchmark, environment, version) | |
print(env) | |
episode_rewards = [] | |
obs, info = env.reset() | |
while len(episode_rewards) < 100: | |
# action = model_uploader.predict(obs) | |
action = env.action_space.sample() | |
obs, reward, terminated, truncated, info = env.step(action) | |
print(reward) | |
episode_rewards.append(reward) | |
if terminated or truncated: | |
obs, info = env.reset() | |
return episode_rewards | |