Skip to content

About

This is a github archive, containing my entry for the 2025 Huawei Cloud Development/Information Storage Competition — a Tensor-based Intelligent Semantic Hierarchical Storage System.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

AATTS:基于张量的智能语义分层存储系统

这个项目是我在2025年华为云开发/信息存储竞赛的参赛作品——一个基于张量的智能语义分层存储系统(AI-Aware-Tiered-Tensor-Storage, AATTS),在这个README文档中,我将详细说明项目的背景应用和技术原理,以及该项目的完整复现操作指南。

项目背景与技术原理

背景与摘要

随着AI模型的发展,模型参数、权重、checkpoint数量爆炸,限制AI性能的关键因素已经从GPU计算性能变成了数据I/O延迟与存储的速度。解决这一问题,无论是对于在线小批量推理服务,还是对于耗时、成本巨大的边缘模型微调和科研训练过程都具有巨大价值。而传统存储系统主要关注静态冷热分层(如HDD/SDD),缺乏对AI工作负载访问模式的理解和主动优化。

本作品提出并实现了一个轻量级智能分层存储中间件原型——AI-aware Tiered Tensor Store (AAT-TS) 面向模型推理/微调的智能分层存储与预取中间件。该原型通过基于深度学习的语义层级知预取器、可动态监测和配置的策略引擎与基于FUSE接口层的透明化分层存储管理器,在AI模型框架访问存储层时,实现智能缓存与预取。

在基于真实BERT-tiny模型的测试中,系统在在线推理场景下实现了最高4.78倍的性能提升与75.0%的预取命中率,能够降低31.8%冷启动的延迟时间,同时能够基于边缘微调和科研环境等场景进行动态性能策略调整,有效验证了语义感知存储优化思路的可行性与巨大潜力。本作品为AI与存储的跨层优化提供了一个可实践、全方位的开源解决方案。

核心技术和创新

  • 语义级预取器:基于PyTorch框架Dataset的底层原理(如固定随机种子、数据增强文件缓存等)实现轻量级语义预取器,能够预测模型下一步所需的tensor,并提前将其从慢速存储层加载到快速层。在真实BERT模型训练数据的测试中,显著提升了冷启动I/O延迟。

  • 分层存储引擎:使用Redis作为高速缓存层,MinIO作为低成本对象存储层,实现tensor层级数据的智能迁移与存储管理。

  • 透明POSIX接口:通过用户态FUSE提供透明的POSIX文件系统接口,无需修改现有PyTorch或HuggingFace模型代码,即可无缝接入系统,享受存储优化带来的性能提升。

  • 可配置策略引擎:内置策略引擎支持在“性能优先”与“成本优先”模式之间动态切换,适配云端与边缘不同场景的需求。


项目复现完整操作指南

以下步骤将帮助你完整复现 AATTS 系统,并运行性能测试。

第一步:克隆仓库,完成环境配置

  1. 克隆代码仓库:

    git clone https://github.com/hanlin2007/2025-AI-Aware-Tiered-Tensor-Storage.git aatts-project
    cd aatts-project
  2. 为脚本添加可执行权限,并运行自动化环境配置脚本,安装所有依赖并启动基础服务:

    chmod +x setup_environment.sh
    chmod +x start_demo.sh
    chmod +x stop_demo.sh
    ./setup_environment.sh

    此脚本将自动执行以下操作:

    • 创建并激活 Python 虚拟环境(venv/)
    • 升级 pip 到最新版本
    • 安装系统依赖(如 Redis 服务器)
    • 安装 Python 依赖包:torch, transformers, minio, redis, scikit-learn, fuse-python, numpy 等
    • 启动并启用 Redis 服务(通过 systemd 或 service)
    • 运行 check_environment.py 验证环境是否正确

    注意:脚本执行过程中可能需要输入 sudo 密码以安装系统软件包

第二步:准备真实模型数据

项目基于真实的 BERT‑tiny 模型结构模拟各层权重数据。请运行以下脚本生成完整的模型文件(约 50 MB):

python aat_real_model_loader.py

脚本会在当前目录下创建 real_model_data/ 文件夹,并生成:

  • config.json:模型配置文件
  • embedding.bin, encoder_layer_0.bin, …, classifier.bin 等层文件(均为真实初始化权重的二进制格式)

生成完成后,可查看统计信息:

python aat_real_model_loader.py  # 脚本会自动打印模型统计

第三步:启动存储服务与 FUSE 文件系统

使用一键启动脚本拉起所有核心服务:

./start_demo.sh

该脚本将顺序执行:

  • 清理可能残留的旧进程(卸载 FUSE、终止 MinIO 和 FUSE 进程)
  • 确保 Redis 内存数据库服务正在运行(端口6379)
  • 启动 MinIO 对象存储(数据目录 ~/minio-data,API 端口 9000,控制台端口 9001)
  • 创建挂载点 /mnt/aat 并设置权限
  • 后台启动 FUSE 文件系统(aat_fuse_v2.py),将虚拟文件系统挂载到 /mnt/aat
  • 验证所有服务状态,成功后显示访问信息

验证:可通过 ls /mnt/aat 查看是否出现模型文件列表(如 embedding.bin, layer0.bin 等)。

第四步:运行综合性能测试

服务启动并挂载成功后,可依据直接回车,或执行完整的测试脚本:

python aat_final_test.py

测试将模拟三种真实 AI 工作负载:

  • 在线推理:突发流量、不同推理深度
  • 边缘微调:频繁读取 + 检查点保存
  • 科研环境:多版本模型访问

测试过程中会自动收集缓存命中率、预取准确率、响应延迟、存储节省等指标。整个测试约需 3‑5 分钟,结束后将在项目根目录生成带时间戳的测试报告文件(JSON 格式数据和 PNG 图表)。

第五步:查看测试报告

启动内置的 HTTP 报告服务器:

python simple_server_final.py

然后在浏览器中访问 http://localhost:8080 查看可视化报告面板。报告包含:

  • 性能图表(延迟分布、吞吐量)
  • 技术架构分析
  • 效率指标(缓存命中率、预取准确率)
  • 成本效益评估(存储节省、TCO 对比)

第六步:停止所有服务

测试完成后,建议执行以下脚本清理后台进程并卸载 FUSE:

./stop_demo.sh

该脚本将终止 MinIO 和 FUSE 进程,并卸载 /mnt/aat。


重要注意事项

  • 操作系统要求:所有脚本均在 Linux(Ubuntu 20.04+ / CentOS 7+)和 macOS 上测试通过。Windows 用户请使用 WSL2 或 Docker 环境。
  • 权限:脚本中涉及 sudo 的操作(安装系统包、挂载 FUSE、启动系统服务)需要用户具有 sudo 权限。
  • 端口占用:确保以下端口未被占用:6379(Redis)、9000(MinIO API)、9001(MinIO 控制台)、8080(报告服务器)。如有冲突,请修改相应配置文件。
  • FUSE 内核支持:Linux 需安装 fuse 包(sudo apt install fuse 或 sudo yum install fuse),macOS 需安装 macFUSE。
  • 模型数据目录:FUSE 文件系统通过 AATStorageManagerV2 读取 real_model_data/ 下的文件,请确保该目录存在且包含完整数据(可通过 aat_real_model_loader.py 生成)。
  • MinIO 配置:首次启动 MinIO 后,可通过浏览器访问 http://localhost:9001,使用默认密钥 minioadmin/minioadmin 登录。本项目暂不依赖具体的 bucket,如需扩展可自行创建 aat-models 存储桶。
  • 错误排查:
    • 若 Redis 连接失败,检查 redis-cli ping 是否返回 PONG。
    • 若 FUSE 挂载点为空,查看 fuse.log 日志文件。
    • 若 MinIO 无法访问,检查 minio.log 日志,确认端口监听状态。

贡献

欢迎通过 Issue 或 Pull Request 提交改进建议或错误修复。

许可

本项目采用 MIT 开源许可。允许自由使用、修改和分发代码,但需保留原始版权和许可声明。详细信息请查看MIT License。

About

This is a github archive, containing my entry for the 2025 Huawei Cloud Development/Information Storage Competition — a Tensor-based Intelligent Semantic Hierarchical Storage System.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages