Sushruth21 commited on
Commit
433cefc
·
1 Parent(s): cf4926b

refactor: revert to root-level package structure with proper imports and hacky pyproject.toml setup

Browse files
.env DELETED
@@ -1,20 +0,0 @@
1
- # Environment configuration for Energy & Memory RAM Optimization RL Environment
2
- # OPTION A: Qwen/Qwen3.5-27B (Recommended for technical reasoning)
3
- #
4
- # Required Environment Variables:
5
- # - API_BASE_URL: The API endpoint for the LLM
6
- # - MODEL_NAME: The model identifier to use for inference
7
- # - HF_TOKEN: Your Hugging Face / API key
8
- # - LOCAL_IMAGE_NAME: The name of the local image to use for the environment (optional)
9
-
10
- # The API endpoint for the LLM
11
- API_BASE_URL=https://router.huggingface.co/v1
12
-
13
- # The model identifier to use for inference (Option A: Qwen for technical optimization)
14
- MODEL_NAME=Qwen/Qwen3.5-27B
15
-
16
- # Your Hugging Face / API key
17
- HF_TOKEN=
18
-
19
- # The name of the local image to use for the environment if using from_docker_image() method
20
- LOCAL_IMAGE_NAME=energy-optimization-rl
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
he_demo/__init__.py → __init__.py RENAMED
@@ -6,9 +6,9 @@
6
 
7
  """Energy & Memory RAM Optimization Environment."""
8
 
9
- from he_demo.client import EnergyOptimizationEnv
10
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation, Task
11
- from he_demo.task_graders import (
12
  TASK_GRADERS,
13
  get_grader,
14
  get_all_graders,
@@ -19,14 +19,14 @@ from he_demo.task_graders import (
19
  task_4_advanced_efficiency_grader,
20
  task_5_expert_optimization_grader,
21
  )
22
- from he_demo.task_registry import (
23
  TASK_REGISTRY,
24
  get_all_tasks_with_graders,
25
  get_task_grader,
26
  get_tasks_count,
27
  is_grader_requirement_met,
28
  )
29
- from he_demo.grader_manifest import (
30
  GRADERS_MANIFEST,
31
  get_graders_manifest,
32
  get_active_graders_count,
 
6
 
7
  """Energy & Memory RAM Optimization Environment."""
8
 
9
+ from client import EnergyOptimizationEnv
10
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task
11
+ from task_graders import (
12
  TASK_GRADERS,
13
  get_grader,
14
  get_all_graders,
 
19
  task_4_advanced_efficiency_grader,
20
  task_5_expert_optimization_grader,
21
  )
22
+ from task_registry import (
23
  TASK_REGISTRY,
24
  get_all_tasks_with_graders,
25
  get_task_grader,
26
  get_tasks_count,
27
  is_grader_requirement_met,
28
  )
29
+ from grader_manifest import (
30
  GRADERS_MANIFEST,
31
  get_graders_manifest,
32
  get_active_graders_count,
he_demo/client.py → client.py RENAMED
@@ -12,7 +12,7 @@ from openenv.core import EnvClient
12
  from openenv.core.client_types import StepResult
13
  from openenv.core.env_server.types import State
14
 
15
- from .models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
16
 
17
 
18
  class EnergyOptimizationEnv(
 
12
  from openenv.core.client_types import StepResult
13
  from openenv.core.env_server.types import State
14
 
15
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
16
 
17
 
18
  class EnergyOptimizationEnv(
evaluate_inference.py CHANGED
@@ -23,9 +23,9 @@ os.environ.setdefault("MODEL_NAME", "Qwen/Qwen2.5-72B-Instruct")
23
  os.environ.setdefault("LOCAL_SERVER_URL", "http://localhost:8000")
24
 
25
  # Import after setting environment variables
26
- from he_demo.client import EnergyOptimizationEnv
27
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation
28
- from he_demo.task_graders import get_grader, get_grader_metadata, TASK_GRADERS
29
 
30
  print("=" * 80)
31
  print("LLM INFERENCE EVALUATION SCRIPT")
 
23
  os.environ.setdefault("LOCAL_SERVER_URL", "http://localhost:8000")
24
 
25
  # Import after setting environment variables
26
+ from client import EnergyOptimizationEnv
27
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation
28
+ from task_graders import get_grader, get_grader_metadata, TASK_GRADERS
29
 
30
  print("=" * 80)
31
  print("LLM INFERENCE EVALUATION SCRIPT")
he_demo/grader_manifest.py → grader_manifest.py RENAMED
File without changes
gym_wrapper.py CHANGED
@@ -9,18 +9,9 @@ import gymnasium as gym
9
  import numpy as np
10
  sys.path.insert(0, os.path.dirname(__file__))
11
 
12
- # Mock the he_demo package
13
- import types
14
- he_demo = types.ModuleType('he_demo')
15
  from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
16
- he_demo.EnergyOptimizationAction = EnergyOptimizationAction
17
- he_demo.EnergyOptimizationObservation = EnergyOptimizationObservation
18
- he_demo.Task = Task
19
- he_demo.TaskSummary = TaskSummary
20
- sys.modules['he_demo'] = he_demo
21
- sys.modules['he_demo.models'] = he_demo
22
-
23
- from he_demo.server.he_demo_environment import EnergyOptimizationEnvironment
24
 
25
  class EnergyOptimizationGymEnv(gym.Env):
26
  """Gym wrapper for the Energy Optimization Environment."""
 
9
  import numpy as np
10
  sys.path.insert(0, os.path.dirname(__file__))
11
 
12
+ # Import from root level modules
 
 
13
  from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
14
+ from server.he_demo_environment import EnergyOptimizationEnvironment
 
 
 
 
 
 
 
15
 
16
  class EnergyOptimizationGymEnv(gym.Env):
17
  """Gym wrapper for the Energy Optimization Environment."""
inference.py CHANGED
@@ -32,8 +32,8 @@ if TYPE_CHECKING:
32
  # Lazy imports - Only imported when needed to avoid hanging on startup
33
  # from openai import OpenAI, OpenAIError
34
 
35
- from he_demo.client import EnergyOptimizationEnv
36
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation
37
 
38
 
39
  # Lazy OpenAI client initialization
 
32
  # Lazy imports - Only imported when needed to avoid hanging on startup
33
  # from openai import OpenAI, OpenAIError
34
 
35
+ from client import EnergyOptimizationEnv
36
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation
37
 
38
 
39
  # Lazy OpenAI client initialization
inference_v2.py CHANGED
@@ -27,8 +27,8 @@ from dataclasses import dataclass, asdict
27
  from datetime import datetime
28
  import statistics
29
 
30
- from he_demo.client import EnergyOptimizationEnv
31
- from he_demo.models import EnergyOptimizationObservation, EnergyOptimizationAction
32
 
33
 
34
  # ============================================================================
 
27
  from datetime import datetime
28
  import statistics
29
 
30
+ from client import EnergyOptimizationEnv
31
+ from models import EnergyOptimizationObservation, EnergyOptimizationAction
32
 
33
 
34
  # ============================================================================
he_demo/models.py → models.py RENAMED
File without changes
pyproject.toml CHANGED
@@ -41,4 +41,6 @@ server = "he_demo.server.app:main"
41
 
42
  [tool.setuptools]
43
  include-package-data = true
44
- packages = ["he_demo", "he_demo.server"]
 
 
 
41
 
42
  [tool.setuptools]
43
  include-package-data = true
44
+ package-dir = {"he_demo" = "."}
45
+ py-modules = ["models", "client", "task_graders", "task_registry", "grader_manifest"]
46
+ packages = ["server"]
{he_demo/server → server}/__init__.py RENAMED
File without changes
{he_demo/server → server}/app.py RENAMED
@@ -35,12 +35,17 @@ except Exception as e: # pragma: no cover
35
  "openenv is required for the web interface. Install dependencies with '\n uv sync\n'"
36
  ) from e
37
 
 
 
 
 
 
38
  from fastapi import FastAPI
39
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation
40
- from he_demo.server.he_demo_environment import EnergyOptimizationEnvironment
41
- from he_demo.task_graders import get_grader_metadata, TASK_GRADERS
42
- from he_demo.task_registry import get_all_tasks_with_graders, get_tasks_count, is_grader_requirement_met
43
- from he_demo.grader_manifest import get_graders_manifest, is_validator_satisfied
44
 
45
 
46
  # Create the app with web interface and README integration
 
35
  "openenv is required for the web interface. Install dependencies with '\n uv sync\n'"
36
  ) from e
37
 
38
+ import sys
39
+ import os
40
+ # Add parent directory to path so we can import root-level modules
41
+ sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
42
+
43
  from fastapi import FastAPI
44
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation
45
+ from .he_demo_environment import EnergyOptimizationEnvironment
46
+ from task_graders import get_grader_metadata, TASK_GRADERS
47
+ from task_registry import get_all_tasks_with_graders, get_tasks_count, is_grader_requirement_met
48
+ from grader_manifest import get_graders_manifest, is_validator_satisfied
49
 
50
 
51
  # Create the app with web interface and README integration
{he_demo/server → server}/he_demo_environment.py RENAMED
@@ -14,12 +14,17 @@ RAM usage and energy consumption through various optimization strategies.
14
  import random
15
  from typing import List
16
  from uuid import uuid4
 
 
 
 
 
17
 
18
  from openenv.core.env_server.interfaces import Environment
19
  from openenv.core.env_server.types import State
20
 
21
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
22
- from he_demo.task_graders import TASK_GRADERS, get_grader, get_all_graders, get_grader_metadata
23
 
24
 
25
  class EnergyOptimizationEnvironment(Environment):
 
14
  import random
15
  from typing import List
16
  from uuid import uuid4
17
+ import sys
18
+ import os
19
+
20
+ # Add parent directory to path so we can import root-level modules
21
+ sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
22
 
23
  from openenv.core.env_server.interfaces import Environment
24
  from openenv.core.env_server.types import State
25
 
26
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
27
+ from task_graders import TASK_GRADERS, get_grader, get_all_graders, get_grader_metadata
28
 
29
 
30
  class EnergyOptimizationEnvironment(Environment):
{he_demo/server → server}/requirements.txt RENAMED
File without changes
he_demo/task_graders.py → task_graders.py RENAMED
@@ -18,7 +18,7 @@ The graders are exposed through the TASK_GRADERS registry for easy discovery.
18
  """
19
 
20
  from typing import Callable, Dict, Any
21
- from he_demo.models import EnergyOptimizationObservation
22
 
23
 
24
  # ============================================================================
 
18
  """
19
 
20
  from typing import Callable, Dict, Any
21
+ from models import EnergyOptimizationObservation
22
 
23
 
24
  # ============================================================================
he_demo/task_registry.py → task_registry.py RENAMED
@@ -6,7 +6,7 @@ for easy discovery and validation.
6
  """
7
 
8
  from typing import Dict, Callable, Any
9
- from he_demo.task_graders import (
10
  task_1_basic_ram_reduction_grader,
11
  task_2_energy_optimization_grader,
12
  task_3_balanced_optimization_grader,
 
6
  """
7
 
8
  from typing import Dict, Callable, Any
9
+ from task_graders import (
10
  task_1_basic_ram_reduction_grader,
11
  task_2_energy_optimization_grader,
12
  task_3_balanced_optimization_grader,
test_environment.py CHANGED
@@ -10,23 +10,9 @@ import os
10
  project_root = os.path.dirname(__file__)
11
  sys.path.insert(0, project_root)
12
 
13
- # Mock the he_demo package for testing
14
- import types
15
- he_demo = types.ModuleType('he_demo')
16
-
17
- # Import models and add to he_demo
18
  from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
19
- he_demo.EnergyOptimizationAction = EnergyOptimizationAction
20
- he_demo.EnergyOptimizationObservation = EnergyOptimizationObservation
21
- he_demo.Task = Task
22
- he_demo.TaskSummary = TaskSummary
23
-
24
- # Add to sys.modules
25
- sys.modules['he_demo'] = he_demo
26
- sys.modules['he_demo.models'] = he_demo
27
-
28
- # Now import the environment
29
- from he_demo.server.he_demo_environment import EnergyOptimizationEnvironment
30
 
31
  def test_environment():
32
  """Test the energy optimization environment."""
 
10
  project_root = os.path.dirname(__file__)
11
  sys.path.insert(0, project_root)
12
 
13
+ # Import from root level modules
 
 
 
 
14
  from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
15
+ from server.he_demo_environment import EnergyOptimizationEnvironment
 
 
 
 
 
 
 
 
 
 
16
 
17
  def test_environment():
18
  """Test the energy optimization environment."""
train_agent.py CHANGED
@@ -10,17 +10,8 @@ import sys
10
  import os
11
  sys.path.insert(0, os.path.dirname(__file__))
12
 
13
- # Mock the he_demo package for direct testing
14
- import types
15
- he_demo = types.ModuleType('he_demo')
16
  from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
17
- he_demo.EnergyOptimizationAction = EnergyOptimizationAction
18
- he_demo.EnergyOptimizationObservation = EnergyOptimizationObservation
19
- he_demo.Task = Task
20
- he_demo.TaskSummary = TaskSummary
21
- sys.modules['he_demo'] = he_demo
22
- sys.modules['he_demo.models'] = he_demo
23
-
24
  from gym_wrapper import EnergyOptimizationGymEnv
25
  from task_graders import TASK_GRADERS, get_grader_metadata
26
  from stable_baselines3 import PPO
 
10
  import os
11
  sys.path.insert(0, os.path.dirname(__file__))
12
 
13
+ # Import from root level modules
 
 
14
  from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
 
 
 
 
 
 
 
15
  from gym_wrapper import EnergyOptimizationGymEnv
16
  from task_graders import TASK_GRADERS, get_grader_metadata
17
  from stable_baselines3 import PPO
validate.py CHANGED
@@ -5,10 +5,10 @@ Final validation script for the Energy & Memory RAM Optimization Environment.
5
  Per hackathon requirements, this validation includes grader configuration verification.
6
  """
7
 
8
- # Import from properly structured he_demo package
9
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
10
- from he_demo.task_graders import TASK_GRADERS, get_grader_metadata, get_grader
11
- from he_demo.server.he_demo_environment import EnergyOptimizationEnvironment
12
 
13
  def main():
14
  print("🔋 Energy & Memory RAM Optimization Environment - Final Validation")
 
5
  Per hackathon requirements, this validation includes grader configuration verification.
6
  """
7
 
8
+ # Import models and graders from root level
9
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
10
+ from task_graders import TASK_GRADERS, get_grader_metadata, get_grader
11
+ from server.he_demo_environment import EnergyOptimizationEnvironment
12
 
13
  def main():
14
  print("🔋 Energy & Memory RAM Optimization Environment - Final Validation")
validate_comprehensive.py CHANGED
@@ -11,10 +11,10 @@ import os
11
  project_root = os.path.dirname(__file__)
12
  sys.path.insert(0, project_root)
13
 
14
- # Import from properly structured he_demo package
15
- from he_demo.models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
16
- from he_demo.task_graders import TASK_GRADERS, get_grader, get_grader_metadata
17
- from he_demo.server.he_demo_environment import EnergyOptimizationEnvironment
18
 
19
  def create_observation(ram_usage, energy_consumption, steps_taken):
20
  """Helper to create observations for testing."""
 
11
  project_root = os.path.dirname(__file__)
12
  sys.path.insert(0, project_root)
13
 
14
+ # Import models and graders from root level
15
+ from models import EnergyOptimizationAction, EnergyOptimizationObservation, Task, TaskSummary
16
+ from task_graders import TASK_GRADERS, get_grader, get_grader_metadata
17
+ from server.he_demo_environment import EnergyOptimizationEnvironment
18
 
19
  def create_observation(ram_usage, energy_consumption, steps_taken):
20
  """Helper to create observations for testing."""