综合介绍
Aana SDK 是一个开源框架,由 Mobius Labs 开发,名字源于马拉雅拉姆语“ആന”(大象)。它帮助开发者快速部署和管理多模态 AI 模型,支持处理文本、图像、音频和视频等多种数据。Aana SDK 基于 Ray 分布式计算框架,设计上注重可靠性、可扩展性和效率。开发者可以用它轻松构建从单机到集群的应用,比如视频转录、图像描述或智能聊天工具。
功能列表
- 支持多模态数据:能同时处理文本、图像、音频和视频。
- 模型部署与扩展:可在单机或集群上部署机器学习模型。
- 自动生成 API:根据定义的端点自动创建并验证 API。
- 实时流式输出:支持实时应用和大语言模型的流式结果。
- 预定义数据类型:内置图像、视频等常用数据类型支持。
- 后台任务队列:端点任务自动后台运行,无需额外配置。
- 集成多种模型:支持 Whisper、vLLM、Hugging Face Transformers 等。
- 文档自动生成:根据端点自动生成应用文档。
使用帮助
安装流程
Aana SDK 的安装分为 PyPI 和 GitHub 两种方式,以下是详细步骤:
- 准备环境
- 需要 Python 3.8 或更高版本。
- 推荐手动安装 PyTorch(>=2.1),根据系统选择合适的版本(见 https://pytorch.org/get-started/locally/)。否则默认安装可能无法充分利用 GPU。
- 若使用 GPU,建议安装 Flash Attention 库提升性能(见 https://github.com/Dao-AILab/flash-attention)。
- 通过 PyPI 安装
- 运行以下命令安装核心依赖:
pip install aana
- 若需完整功能,可安装所有额外依赖:
pip install aana[all]
- 其他选项包括
vllm
(语言模型)、asr
(语音识别)、transformers
(变换器模型)等,视需求选择。
- 运行以下命令安装核心依赖:
- 通过 GitHub 安装
- 克隆仓库:
git clone https://github.com/mobiusml/aana_sdk.git cd aana_sdk
- 使用 Poetry 安装(建议 Poetry >= 2.0,见 https://python-poetry.org/docs/#installation):
poetry install --extras all
- 开发环境可加测试依赖:
poetry install --extras all --with dev,tests
- 克隆仓库:
- 验证安装
- 输入
python -c "import aana; print(aana.__version__)"
,若返回版本号则成功。
- 输入
如何使用
Aana SDK 的核心是“部署”(Deployments)和“端点”(Endpoints)。部署加载模型,端点定义功能。以下以视频转录为例说明:
- 创建新应用
- 新建文件夹(如
my_app
),创建app.py
。 - 可参考模板 https://github.com/mobiusml/aana_app_template 快速开始。
- 新建文件夹(如
- 配置部署
- 在
app.py
中加载 Whisper 模型:from aana.sdk import AanaSDK from aana.deployments.whisper_deployment import WhisperDeployment, WhisperConfig, WhisperModelSize, WhisperComputeType app = AanaSDK(name="video_app") app.register_deployment( "whisper", WhisperDeployment.options( num_replicas=1, ray_actor_options={"num_gpus": 0.25}, # 若无GPU可删除此行 user_config=WhisperConfig( model_size=WhisperModelSize.MEDIUM, compute_type=WhisperComputeType.FLOAT16 ).model_dump(mode="json") ) )
- 在
- 定义端点
- 添加转录端点:
from aana.core.models.video import VideoInput @app.aana_endpoint(name="transcribe_video") async def transcribe_video(self, video: VideoInput): audio = await self.download(video.url) # 下载并提取音频 transcription = await self.whisper.transcribe(audio) # 转录 return {"transcription": transcription}
- 添加转录端点:
- 运行应用
- 在终端运行:
python app.py serve
- 或用 Aana CLI:
aana deploy app:app --host 127.0.0.1 --port 8000
- 应用启动后,默认地址为
http://127.0.0.1:8000
。
- 在终端运行:
- 测试功能
- 用 cURL 发送请求:
curl -X POST http://127.0.0.1:8000/transcribe_video -F body='{"url":"https://www.youtube.com/watch?v=VhJFyyukAzA"}'
- 或访问 Swagger UI(
http://127.0.0.1:8000/docs
)测试。
- 用 cURL 发送请求:
特色功能操作
- 多模态处理
除了语音转录,还可集成图像模型(如 Blip2)生成描述:captions = await self.blip2.generate_captions(video.frames)
- 流式输出
支持实时返回结果,例如:@app.aana_endpoint(name="chat", streaming=True) async def chat(self, question: str): async for chunk in self.llm.generate_stream(question): yield chunk
- 集群扩展
用 Ray 集群部署,修改app.connect()
指定集群地址即可。
额外工具
- Ray Dashboard:运行后访问
http://127.0.0.1:8265
,查看集群状态和日志。 - Docker 部署:见 https://mobiusml.github.io/aana_sdk/pages/docker/。
应用场景
- 视频内容整理
为教学视频生成字幕和摘要,方便存档和搜索。 - 智能问答系统
用户上传视频后提问,系统基于音视频内容回答。 - 企业数据分析
从会议录音和视频中提取关键信息,生成报告。
QA
- 需要 GPU 吗?
不强制要求。CPU 也能运行,但 GPU(建议 40GB 显存)会大幅提升效率。 - 如何处理安装错误?
检查 Python 版本和依赖是否匹配,运行时加--log-level DEBUG
查看详细日志。 - 支持哪些语言模型?
内置 vLLM、Whisper 等,可通过 Transformers 集成更多 Hugging Face 模型。