Skip to content

marshwallen/AIOS

 
 

Repository files navigation

仓库介绍

  • 本 forked repo 源于《AIOS:LLM Agent Operating System》的官方代码仓库,仅供学习之用,在其基础上进行二次开发
  • 关于本 AIOS 的技术架构和实现笔记参考:链接
  • 原 Readme 请参考 README_OFFCIAL.md

Instruction

  1. AIOS 安装
# 依赖安装完成后,敲入以下命令启动 AIOS 服务
bash runtime/launch_kernel.sh

# [DEBUG] Using Agent Hub URL: https://app.aios.foundation
# [DEBUG] Using Tool Hub URL: https://app.aios.foundation
# INFO:     Started server process [54037]
# INFO:     Waiting for application startup.
# INFO:     Application startup complete.
# INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
  1. LLM Backend 准备
# 1 检查 Ollama 服务是否起来
ollama -v
# 若服务成功起来,会显示 ollama version is x.x.x

# 2 检查 Ollama 模型列表
ollama list

# NAME               ID              SIZE      MODIFIED     
# deepseek-r1:14b    ea35dfe18182    9.0 GB    20 hours ago    
# deepseek-r1:8b     28f8fd6cdc67    4.9 GB    27 hours ago    
  1. 通过 Cerebrum 调用 AIOS 服务
# 多实例调用 AIOS 服务
python client/tasktest.py --llm_name deepseek-r1:8b --llm_backend ollama

# ...
# 📋 Task result: {'agent_name': 'example/story_teller', 'result': "\n\n**Step-by-Step Explanation:**\n\n1. **Determine Genre and Theme:** The story is a slapstick comedy set in a quirky village, ..., emphasizing the power of laughter.", 'rounds': 3}
# ✅ Task completed
# Concurrent run time: 70.77558755874634s
  • AIOS 支持的 Backend 列表写在 README_OFFCIAL.md 的 Supported LLM Cores 项中

调度算法

AIOS 支持多个 Agent 的同时请求,因此需要调度算法合理规划每一个 task

  1. 先来先服务 (First-In, First-Out, FIFO)
  • 一种简单的调度策略,任务按照它们到达的顺序进行处理。每个任务在前一个任务完成后才开始执行。这种策略适用于任务之间没有优先级差异的场景
  • 该调度算法为本 AIOS 的默认调度算法,具体使用线程和队列实现了一个 FIFO 任务队列,类似于轮询调度程序。但是,超时时间是 1 秒而不是 0.05 秒
  • 具体实现见:aios/scheduler/fifo_scheduler.py
# 要启用 FIFO 调度,请在 runtime/kernel.py 中修改如下项
scheduler_type = "FIFO"
  1. 非抢占式优先级调度 (Non-preemptive Priority Scheduling)
  • 任务按照其优先级进行处理,但一旦一个任务开始执行,它将不会被中断,直到完成或自愿让出处理器。这种策略适用于需要确保高优先级任务最终得到执行的场景,同时保持系统的稳定性和可预测性
  • 本 forked repo 实现了该调度算法,主要方法有:
    • 任务队列:使用优先级队列实现,每个任务都有一个优先级,优先级高的任务会优先被调度
    • 优先级队列管理:任务根据优先级插入和重新排列
    • 新任务动态插入:从系统调用函数中动态获取新任务并插入到队列中
    • 小顶堆管理队列:使用小顶堆管理队列,能够快速地找到优先级最高的任务
  • 具体实现见:aios/scheduler/npp_scheduler.py
# 要启用非抢占式优先级调度,请在 runtime/kernel.py 中修改如下项
scheduler_type = "NPPS"

About

AIOS: AI Agent Operating System

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 92.9%
  • Shell 6.9%
  • Dockerfile 0.2%