BigQuant使用文档

BigQuant-SDK 使用文档

由small_q创建,最终由bq1fuwkt 被浏览 577 用户

本文件提供 BigQuant Python API 的使用说明,包括

  • Bigquant 用户管理
  • Dai 数据管理
  • Papertrading 模拟交易管理
  • Account 账户管理
  • Bigtrader 交易管理
  • Aistuido 管理
  • Fai 分布式执行管理 等功能。

安装方式

安装 bigquant-sdk(Pyhton)

加群获取最新版本安装包

前置代码(Python)

from bigquant import dai, papertrading, account, bigtrader, aistuido, fai

1 Bigquant 用户管理

1.1 模块介绍

本模块提供 BigQuant 平台的用户认证和管理功能,支持多用户登录和信息查询。

1.2 默认用户首次登陆

命令: bq --save-auth --aksk ak.sk\n功能:默认用户首次使用 AK/SK 登陆\n参数:

  • ak.sk: str, bigquant 平台注册的API Keys

    API Keys 获取步骤:

    • 登录 BigQuant 平台:https://bigquant.com
    • 点击 ”用户名“ 进入”个人中心“ → ”API Keys“
    • 点击 ”新增访问凭证“,保存新 AKSK

返回:“✓ Config saved to XXX”

1.3 多用户登陆

方法名:bigquant.from_config()\n功能:除默认用户,登陆其他用户\n参数:

  • path:str, 其他用户配置文件的绝对路径

    配置文件(json 格式)示例:

    {
      "auth": {
        "ak": "XXX",
        "sk": "XXX"
      }
    }
    

返回:Bigquant 对象

注意:其他用户调用模块功能时,需完整按照 用户.模块名.函数 的方式

1.4 获取用户信息

方法名:Bigquant.whoami()\n功能:获取用户信息

参数:无

返回:dict(包含用户名、用户ID等)

2 Dai 数据管理

2.1 模块介绍

本模块提供数据查询、数据源读写、自定义函数等功能,支持远程查询和 BDB 数据管理

2.2 自定义 UDF 函数

类名: dai.DaiUDF

功能: 自定义 UDF 函数定义

参数:

  • name : str,必填,UDF 函数名称
  • function : Callable,必填,Python 函数对象
  • parameters : Optional[List],非必填,参数类型列表,默认为 None
  • return_type : Optional[Any],非必填,返回值类型,默认为 None
  • type : Optional[Any],非必填,UDF 类型,默认为 None
  • null_handling : Optional[Any],非必填,NULL 值处理方式,默认为 None
  • exception_handling : Optional[Any],非必填,异常处理方式,默认为 None
  • side_effects : bool,非必填,是否有副作用,默认为 False

说明: 用于在 dai.query() 中传递自定义函数,SDK 会自动序列化函数代码并在云端执行

2.3 远程查询数据

方法名:dai.query()\n功能:远程查询\n参数:

  • sql: str,必填,mysql 查询语句
  • udf_list:List[DaiUDF],非必填,UDF 函数列表,默认为 [ ]
  • full_db_scan: bool,非必填, 是否允许全表查询,默认为 False
  • filters:Dict[str, List[Any]],非必填,过滤条件 {"column": ["value1", "value2"]},默认为 {}
  • bind_relations:Dict[str, Any],非必填,绑定本地数据到 SQL 查询 {"name": DataFrame/Table},默认为 None
  • params:Dict[str, Any],非必填,查询参数 {"param_name": "value"},默认为 None
  • compression:bool,非必填,是否启用字符串压缩,默认为 False
  • resource_spec_id:str,指定 AIStudio 资源规格 ID(SDK 专属),默认为 D0(1C/6G) 免费
  • space_id:str,指定 AIStudio 空间 ID(SDK 专属),默认为 主空间

返回:QueryResult 对象

2.4 数据源管理

类名:dai.DataSource

功能:数据源管理

参数:

  • datasource_id : str,必填,数据源 ID

方法:见下

2.4.1 读取 BDB 数据

方法名: dai.DataSource.read_bdb()

功能: 读取 BDB 数据

参数:

  • as_type : Type,非必填,返回类型,默认为 pa.Table,支持 pd.DataFrame, pa.Table
  • partition_filter : Optional[Dict[str, Union[tuple, set]]],非必填,分区过滤条件,默认为 None
    • tuple: 表示范围,如 ("2024-01-01", "2024-12-31")
    • set: 表示特定值,如 {"000001.SZ", "600000.SH"}
  • columns : Optional[List[str]],非必填,要读取的列名列表,默认为 None(读取所有列)

返回: 根据 as_type 参数返回 pd.DataFrame 或 pa.Table

2.4.2 写入 BDB 数据

方法名:dai.DataSource.write_bdb()

功能: 写入 BDB 数据

参数:

data : Union[pd.DataFrame, pa.Table],必填,要写入的数据

update_logs : Optional[Union[bool, Dict]],非必填,是否记录更新日志,默认为 None

update_msg : Optional[str],非必填,更新备注信息,默认为 None

id : Optional[str],非必填,数据源 ID,默认为 None(创建临时数据源)

partitioning : Optional[List[str]],非必填,分区列,默认为 None

indexes : Optional[List[str]],非必填,索引列,默认为 None

excludes : Optional[Set[str]],非必填,排除字段,默认为 None

unique_together : Optional[List[str]],非必填,唯一约束,默认为 None

on_duplicates : str,非必填,冲突处理策略,默认为 "last",可选值:["last", "first", "error", "none"]

sort_by : Optional[List[Tuple[str, str]]],非必填,排序,格式为 [("field", "ascending/descending"), ...],默认为 None

preserve_pandas_index : bool,非必填,是否保留 pandas 索引,默认为 False

docs : Optional[Dict[str, Any]],非必填,文档,默认为 None

timeout : int,非必填,写入锁的超时时间(秒),默认为 300

extra : str,非必填,额外信息,默认为 ""

base_ds : Optional[DataSource],非必填,继承 extra 参数,默认为 None

overwrite : bool,非必填,是否覆盖已有数据,默认为 False

max_threads : Optional[int],非必填,最大线程数,默认为 None

preserve_order : bool,非必填,是否保持顺序,默认为 False

返回:DataSource 对象

2.5 查询结果

类名:dai.QueryResult

功能:查询结果包装类,提供多种数据格式转换方法

方法:见下

2.5.1 获取 Arrow Table

方法名:dai.QueryResult.arrow()

功能:返回 Arrow Table 格式的查询结果

参数:无

返回:pa.Table 对象

2.5.2 转换为 pandas DataFrame

方法名:dai.QueryResult.df()

功能:转换为 pandas DataFrame

参数:无

返回:pd.DataFrame 对象

2.5.3 转换为 Polars DataFrame

方法名:dai.QueryResult.pl()

功能:转换为 Polars DataFrame

参数:无

返回:polars.DataFrame 对象

2.5.4 获取所有行

方法名:dai.QueryResult.fetchall()

功能:获取所有行为列表

参数:无

返回:list,所有行的列表

2.5.5 获取流式读取器

方法名:dai.QueryResult.fetch_arrow_reader()

功能:获取 Arrow 流式读取器,用于大数据场景分批读取

参数:

  • batch_size : int,非必填,每批数据的行数,默认为 1000000

返回:pyarrow.RecordBatchReader 对象

3 Papertrading 模块:策略查询

3.1 模块概述

本模块提供模拟交易策略管理功能,包括策略列表查询、策略详情获取、绩效数据、交易订单、持仓信息等。支持本地/云端代码无缝切换。

主要功能:

  • 获取个人策略和社区分享策略列表
  • 获取策略详情对象(支持管理员特权)
  • 查询策略绩效、订单、持仓、计划订单等数据

权限说明:

  • 个人策略:仅创建者可访问
  • 分享策略:所有用户可查看列表
  • 管理员特权:特定空间管理员(拥有 community 权限)可访问该空间所有策略详情

3.2 获取策略列表

方法名:papertrading.list()

功能:获取用户自己创建的模拟交易策略列表

参数:

  • constraints: Union[Dict[str, Any], None],非必填,查询约束条件,默认为 None
  • order_by: Union[List[str], None],非必填,排序字段列表,默认为 None
  • include_fields: Union[List[str], None],非必填,包含字段列表,默认为 None
  • page: int,非必填,页码,默认为 1
  • size: int,非必填,每页数量,默认为 1000
  • order_by 使用 - 前缀表示降序,如 ["-created_at", "strategy_name"]
  • include_fields 用于只返回指定字段,减少数据传输量

返回字段:

  • id: 策略ID
  • strategy_name: 策略名称
  • status: 策略状态
  • created_at: 创建时间
  • updated_at: 更新时间
  • space_id: 空间ID
  • account_id: 账户ID(dict格式)
  • first_trading_day: 首个交易日
  • benchmark_instrument: 基准代码

注意:此方法只返回用户自己创建的策略,不包含社区分享策略

3.3 获取分享策略列表

方法名:papertrading.list_shared()

功能:获取社区分享的模拟交易策略列表

参数:

  • space_id: Union[str, None],非必填,空间ID,默认为 None
  • constraints: Union[Dict[str, Any], None],非必填,查询约束条件,默认为 None
  • order_by: Union[List[str], None],非必填,排序字段列表,默认为 None
  • include_fields: Union[List[str], None],非必填,包含字段列表,默认为 None
  • isrelative: bool,非必填,是否相对收益,默认为 False
  • benchmark: str,非必填,基准线代码,默认为 "000300.SH"
  • page: int,非必填,页码,默认为 1
  • size: int,非必填,每页数量,默认为 20

参数说明:

  • space_id: 传入特定空间ID可查询该空间的分享策略,默认查询主空间
  • isrelative:
    • False: 返回绝对收益率
    • True: 返回相对于 benchmark 的收益率
  • benchmark 常用代码:
    • 000300.SH: 沪深300
    • 000905.SH: 中证500
    • 000852.SH: 中证1000
    • 000001.SH: 上证指数
  • constraintsorder_byinclude_fields: 用法同 list() 方法

返回:Dict[str, Any]

  • items: list,策略列表
  • count: int,总数量
  • page: int,当前页码
  • size: int,每页数量
  • total: int,总页数

返回字段:

  • id: 策略ID
  • strategy_id: 策略ID
  • strategy_name: 策略名称
  • strategy_desc: 策略描述
  • strategy_article: 策略文章
  • labels: 策略标签
  • datasource: 使用的数据源列表
  • creator: 创建者ID
  • created_at: 创建时间
  • updated_at: 更新时间
  • first_trading_day: 首个交易日
  • trading_day: 最新交易日
  • cumulative_return: 累计收益率
  • annualized_return: 年化收益率
  • max_drawdown: 最大回撤
  • sharpe: 夏普比率
  • win_percent: 胜率
  • today_return: 今日收益率
  • week_return: 近一周收益率
  • month_return: 近一月收益率
  • three_month_return: 近三月收益率
  • six_month_return: 近六月收益率
  • year_return: 近一年收益率
  • collection_count: 收藏数
  • is_featured: 是否精选
  • rank: 排序值

3.4 获取策略对象

方法名:papertrading.get()

功能:获取指定策略对象,用于访问策略详情数据

参数:

  • strategy_id: str,必填,策略 ID

返回:Strategy 对象

权限说明:

  • 策略创建者可以访问自己的策略
  • 特定空间的管理员(拥有 community 权限)可以访问该空间所有策略

注意:

  • 如果策略不存在或无权访问,将抛出 ValueError 异常
  • 管理员权限通过 SPACE_ADMIN_PRIVILEGE_ENABLED_SPACES 配置控制

3.5 Strategy 类

类名:Strategy

功能:策略对象,封装策略基本信息并提供访问策略详情数据的方法

初始化:不能直接实例化,需通过 papertrading.get(strategy_id) 获取

属性:

strategy_info: dict,策略基本信息字典,包含:

  • id: 策略ID
  • strategy_name: 策略名称
  • account_id: 账户ID(dict格式)
  • space_id: 空间ID
  • creator: 创建者ID
  • created_at: 创建时间
  • updated_at: 更新时间
  • first_trading_day: 首个交易日
  • benchmark_instrument: 基准代码

方法:见下

3.5.1 获取策略绩效数据

方法名:Strategy.get_performances()

功能:获取策略的历史绩效数据

参数:

  • fields: Union[List[str], None],非必填,绩效字段列表,默认为 None

说明:默认返回字段包括: trading_day, today_return, max_drawdown, annualized_return, risk_indicator, win_percent, cumulative_return, benchmark, total_market_value, balance, month_return, week_return, three_month_return, six_month_return, created_at, portfolio_value

返回:list,绩效数据列表(每个元素为一个列表,对应 fields 顺序)

返回字段:

  • trading_day: 交易日
  • today_return: 当日收益率
  • cumulative_return: 累计收益率
  • annualized_return: 年化收益率
  • max_drawdown: 最大回撤
  • win_percent: 胜率
  • risk_indicator: 风险指标(dict),包含:
    • sharpe: 夏普比率
    • sortino: 索提诺比率
    • calmar: 卡玛比率
    • information_ratio: 信息比率
  • benchmark: 基准数据(dict或None)
  • total_market_value: 持仓市值
  • balance: 当前现金
  • portfolio_value: 总资产
  • week_return: 近一周收益率
  • month_return: 近一月收益率
  • three_month_return: 近三月收益率
  • six_month_return: 近六月收益率
  • created_at: 创建时间

3.5.2 获取交易订单

方法名:Strategy.get_orders()

功能:获取策略的交易订单记录

参数:

  • constraints: Union[Dict[str, Any], None],非必填,查询条件字典,默认为 None
  • order_by: Union[List[str], None],非必填,排序字段列表,默认为 None
  • include_fields: Union[List[str], None],非必填,包含字段列表,默认为 None
  • page: int,非必填,页码,默认为 1
  • size: int,非必填,每页数量,默认为 100

返回:dict

  • items: list,订单列表
  • count: int,总数量
  • page: int,当前页码
  • size: int,每页数量
  • total: int,总页数

返回字段:

  • id: 订单ID
  • strategy_id: 策略ID
  • account_type: 账户类型
  • account_id: 账户ID
  • trading_day: 交易日
  • exchange: 交易所
  • instrument: 代码
  • name: 代码名称
  • direction: 买卖方向(1=买入,2=卖出)
  • offset_flag: 开平标志(0=开仓,1=平仓,2=平今)
  • order_qty: 委托数量
  • order_price: 委托价格
  • average_price: 成交均价
  • filled_qty: 成交数量
  • order_status: 委托状态
    • 0: 未成交
    • 1: 部分成交
    • 2: 全部成交
    • 3: 部分撤单
    • 4: 全部撤单
    • 5: 已拒绝
  • status_msg: 状态信息
  • order_type: 委托类型(0=限价单,U=市价单)
  • order_property: 委托属性
  • hedge_flag: 投保标记(1=投机)
  • order_dt: 委托时间
  • filled_dt: 成交时间
  • cancel_dt: 撤单时间
  • order_key: 本地订单标识
  • order_sysid: 交易所报单编号
  • entrust_no: 柜台委托编号
  • algo_order_id: 算法单号
  • commission: 交易费用
  • realized_pnl: 平仓盈亏

3.5.3 获取计划订单

方法名:Strategy.get_planned_orders()

功能:获取策略的计划交易订单(交易信号)

参数:

  • constraints: Union[Dict[str, Any], None],非必填,查询条件字典,默认为 None
  • order_by: Union[List[str], None],非必填,排序字段列表,默认为 None
  • include_fields: Union[List[str], None],非必填,包含字段列表,默认为 None
  • page: int,非必填,页码,默认为 1
  • size: int,非必填,每页数量,默认为 100

返回:dict

  • items: list,计划订单列表
  • count: int,总数量
  • page: int,当前页码
  • size: int,每页数量
  • total: int,总页数

返回字段:

  • planned_order_id: 计划订单ID
  • strategy_id: 策略ID
  • account_type: 账户类型
  • account_id: 账户ID
  • trading_day: 交易日
  • order_dt: 待下单时间
  • exchange: 交易所
  • instrument: 代码
  • name: 代码名称
  • direction: 买卖方向(1=买入,2=卖出)
  • offset_flag: 开平标志(0=开仓,1=平仓,2=平今)
  • original_order_qty: 原始委托数量
  • order_qty: 委托数量
  • order_price: 委托价格
  • order_type: 委托类型(0=限价,U=市价)
  • order_status: 委托状态
    • 0: 待执行
    • 1: 执行中
    • 2: 已执行
    • 3: 已取消
  • status_msg: 状态描述
  • order_params: 下单条件参数(dict)
  • order_placed_dt: 实际发单时间
  • order_key: 本地订单标识
  • entrust_no: 委托号
  • algo_order_id: 算法单号
  • stop_loss_price: 止损价格
  • stop_profit_price: 止盈价格
  • created_at: 创建时间

字段说明:

  • original_order_qty: 策略生成的原始委托数量
  • order_qty: 实际执行的委托数量(可能因资金、风控等原因调整)

3.5.4 获取持仓信息

方法名:Strategy.get_positions()

功能:获取策略的持仓数据

参数:

  • constraints: Union[Dict[str, Any], None],非必填,查询条件字典,默认为 None
  • order_by: Union[List[str], None],非必填,排序字段列表,默认为 None
  • include_fields: Union[List[str], None],非必填,包含字段列表,默认为 None
  • page: int,非必填,页码,默认为 1
  • size: int,非必填,每页数量,默认为 100

返回:dict

  • items: list,持仓列表
  • count: int,总数量
  • page: int,当前页码
  • size: int,每页数量
  • total: int,总页数

返回字段:

  • id: 持仓记录ID
  • account_type: 账户类型
  • account_id: 账户ID
  • trading_day: 交易日
  • exchange: 交易所
  • instrument: 代码
  • name: 代码名称
  • posi_direction: 持仓方向(1=多头,2=空头)
  • current_qty: 持仓数量
  • available_qty: 可用数量
  • today_qty: 今日持仓数量
  • today_available_qty: 今日可用数量
  • cost_price: 持仓成本价格
  • last_price: 持仓最新价
  • market_value: 持仓市值
  • margin: 保证金占用
  • position_pnl: 盈亏金额
  • hedge_flag: 投保标记(1=投机)
  • sum_buy_value: 累计买入金额
  • sum_sell_value: 累计卖出金额
  • commission: 累计交易费用
  • dividend_qty: 当日分红数量
  • dividend_cash: 当日分红金额
  • open_date: 开仓日期
  • open_price: 开仓价格
  • settlement_price: 结算价
  • profit_ratio: 盈亏比率
  • initial_qty: 日初持仓数量
  • hold_days: 持有天数
  • created_at: 创建时间
  • updated_at: 更新时间

字段说明:

  • current_qty: 当前总持仓数量
  • available_qty: 可卖数量(股票T+1:current_qty - today_qty;期货T+0:current_qty)
  • today_qty: 今日买入数量(T+1制度下不可卖)
  • today_available_qty: 今日可用数量(期货可用)
  • sum_buy_value / sum_sell_value / commission: 从开仓至今的累计值

4. Account 账户管理

4.1 模块介绍

Account 模块提供账户数据的读取和更新功能,支持现金、持仓、订单和成交记录的查询与管理。

4.2 获取账户对象(account.get)

功能:获取指定账户的 Account 对象实例。

参数:

  • account_id(str,必填):账户 ID

返回值:

  • 类型:Account
  • 说明:返回账户对象实例,可用于后续操作

4.3 Account 类

Account 类用于管理特定账户的数据读取和更新操作。

4.3.1 读取账户数据(read)

功能:从数据库读取账户的现金、持仓、订单或成交数据。

参数:

  • category(str,必填):数据类别,可选值:
    • "cash":现金数据
    • "positions":持仓数据
    • "orders":订单数据
    • "trades":成交数据
  • trading_day(List[str],可选):交易日期列表(格式:YYYY-MM-DD),默认为当前日期

返回值:

  • 类型:dict
  • 说明:包含 items 列表的字典,items 中包含查询到的数据记录

4.3.2 更新账户数据(update)

功能:更新账户的现金、持仓、订单或成交数据到数据库。

参数:

  • category(str,必填):数据类别,可选值同 read 方法
  • data(Union[dict, list],必填):要更新的数据
    • 当 category 为 "cash" 时,必须传入 dict(单条记录)
    • 当 category 为其他值时,必须传入 List[dict](多条记录)

返回值:

  • 类型:dict
  • 说明:更新操作的结果信息

注意:

  • trading_day 字段支持 YYYYMMDD 格式,会自动转换为 YYYY-MM-DD
  • account_type 字段若未提供,会自动从现有数据中获取

  1. Bigtrader 交易管理

5.1 模块介绍

Bigtrader 模块提供本地回测功能,支持股票、期货、期权等多种市场的策略回测。通过

bigtradercpp 引擎实现高性能的本地回测,仅支持 Windows 和 Linux 平台。

5.2 回测子模块(bigtrader.backtest)

5.2.1 运行本地回测(run)

功能:在本地执行策略回测(仅支持 Windows/Linux)。

参数:

  • start_date(str,必填):回测开始日期(格式:YYYY-MM-DD)
  • end_date(str,必填):回测结束日期(格式:YYYY-MM-DD)
  • strategy(dict,必填):策略函数字典,键为字符串,值为可调用对象,支持以下回调函数:
    • initialize:初始化函数
    • before_trading_start:交易前函数
    • handle_data:K线数据处理函数
    • handle_tick:Tick数据处理函数
    • handle_order:订单回调函数
    • handle_trade:成交回调函数
    • after_trading:交易后函数
  • capital_base(float,可选):初始资金,默认 1000000
  • frequency(str,可选):数据频率,默认 "1d",可选值:
    • "1d":日线
    • "1m"、"5m"、"15m"、"30m"、"1h":分钟线
    • "tick":Tick 数据
  • market(str,可选):市场类型,默认 "cn_stock",可选值:
    • "cn_stock":A股
    • "cn_future":期货
    • "cn_fund":基金
    • "cn_cbond":可转债
    • "cn_bond":债券
    • "cn_stock_option":股票期权
    • "cn_future_option":期货期权
    • "cn_stock_index":股票指数
  • instruments(list,可选):标的代码列表,默认为空(全市场)
  • before_start_days(int,可选):回测开始前加载的天数,默认 0
  • volume_limit(float,可选):成交量限制,默认 1.0
  • order_price_field_buy(str,可选):买入价格字段,默认 "open"
  • order_price_field_sell(str,可选):卖出价格字段,默认 "close"
  • logger(可选):自定义日志对象
  • data(可选):用户自定义数据
  • options_data(可选):期权数据

返回值:

  • 类型:pd.DataFrame
  • 说明:回测结果 DataFrame,包含以下字段:
    • returns:当日收益率
    • algorithm_period_return:累计收益率
    • 其他绩效指标字段

注意:

  • macOS 不支持本地回测,会抛出 RuntimeError
  • 需要安装 bigtradercpp 依赖包
  • 历史数据自动从 DAI 数据平台加载

5.3 终端子模块(bigtrader.terminal)

说明:Terminal 模块为保留模块,当前版本暂无公开方法。

5.4 类型定义

Bigtrader 模块导出了以下类型定义,用于策略开发:

  • Market:市场类型枚举
  • Frequency:数据频率枚举
  • AccountType:账户类型枚举
  • Direction:交易方向枚举
  • OffsetFlag:开平标志枚举
  • OrderType:订单类型枚举
  • OrderStatus:订单状态枚举
  • IContext:上下文接口
  • IBarData:K线数据接口
  • ITickData:Tick数据接口
  • ITradeData:成交数据接口
  • IOrderData:订单数据接口
  • IPositionData:持仓数据接口
  • PerOrder、PerContract:费用配置

  1. AIStudio 管理

6.1 模块介绍

AIStudio 模块提供云端 Jupyter 环境的启动、管理和代码执行功能,支持多种资源规格配置。

6.2 获取资源规格列表(aistudio.list)

功能:获取可用的 AIStudio 资源规格列表。

参数:

  • space_id(str,可选):空间 ID,默认为主空间

返回值:

  • 类型:list
  • 说明:资源规格列表,每个规格包含以下字段:
    • id(UUID):规格 ID
    • name(str):规格名称
    • cpu(int):CPU 核数
    • memory(int):内存大小(GB)
    • gpu(int):GPU 数量
    • price(float):价格(BQC/分钟)
    • rank(int):排序值
    • remaining_duration(int):剩余时长(分钟)
    • type(str):规格类型(saas/bigpro/free)

6.3 启动 AIStudio 实例(aistudio.start)

功能:启动或创建 AIStudio 云端实例。

参数:

  • resource_spec_id(str,可选):资源规格 ID(UUID 字符串),默认为主空间默认规格
  • space_id(str,可选):空间 ID,默认为主空间

返回值:

  • 类型:AIStudio
  • 说明:返回 AIStudio 实例对象

异常:

  • RuntimeError:如果 60 秒内无法启动

说明:

  • 如果已有运行中的实例且规格匹配,直接返回
  • 如果规格不匹配,会先关闭现有实例再启动新实例
  • 自动进行健康检查,确保实例可用

6.4 AIStudio 类

6.4.1 执行代码(run)

功能:在 AIStudio 实例中执行 Python 代码或脚本文件。

参数:

  • script_or_code(str,必填):文件路径(绝对路径)或代码字符串
  • is_code(bool,可选):True 表示传入代码字符串,False 表示传入文件路径,默认 False

返回值:

  • 类型:str
  • 说明:代码执行的输出结果

异常:

  • RuntimeError:如果 Studio 不健康或执行失败
  • ValueError:如果路径不是绝对路径
  • FileNotFoundError:如果文件不存在

注意:

  • 执行前会自动检查 Studio 健康状态
  • 支持长时间运行的任务(默认超时 300 秒)
  • 通过 WebSocket 进行实时通信

6.4.2 关闭实例(close)

功能:关闭 AIStudio 云端实例,释放计算资源。

参数:无

返回值:无

异常:

  • RuntimeError:如果关闭失败

说明:

  • 关闭后容器被停止,释放计算资源
  • 配置和数据被保留,可通过 start() 重新启动

  1. Fai 分布式执行管理

7.1 模块介绍

Fai 模块提供基于 Ray 的分布式计算功能,支持集群的创建、管理和远程函数执行。

7.2 获取集群列表(fai.list_clusters)

功能:获取当前用户的集群列表。

参数:

  • all_space(bool,可选):是否获取全空间集群,默认 False

返回值:

  • 类型:list
  • 说明:集群信息列表,每个集群包含 id、fullname、status、num_workers 等字段

7.3 创建集群(fai.create_cluster)

功能:创建新的分布式计算集群。

参数:

  • cluster_name(str,必填):集群名称
  • num_workers(int,必填):worker 节点数量
  • worker_cpus(int,必填):每个 worker 的 CPU 核数
  • worker_memory(Union[str, int],必填):每个 worker 的内存,支持字符串(如

"8G")或字节数

  • worker_gpus(int,可选):每个 worker 的 GPU 数量,默认 0
  • image(str,可选):集群镜像,默认为系统默认镜像
  • max_no_fai_run_time(int,可选):最大空闲时间(秒),默认 300(5分钟)

返回值:

  • 类型:Cluster
  • 说明:返回集群对象实例

7.4 获取集群对象(fai.get_cluster)

功能:根据集群 ID 获取集群对象。

参数:

  • cluster_id(str,必填):集群 ID

返回值:

  • 类型:Cluster
  • 说明:返回集群对象实例

7.5 定义远程函数(fai.remote)

功能:将普通函数转换为可远程执行的函数(装饰器)。

参数:

  • func(Callable,可选):要远程执行的函数
  • **options(可选):Ray 远程选项
    • num_cpus(int):所需 CPU 核数
    • num_gpus(int):所需 GPU 数量
    • memory(Union[str, int]):所需内存,支持字符串(如 "1G")或字节数
    • max_retries(int):最大重试次数
    • 其他 Ray 支持的选项

返回值:

  • 类型:远程函数对象
  • 说明:返回可通过 .remote() 调用的远程函数

7.6 Cluster 类

7.6.1 启动集群(start_cluster)

功能:启动已停止的集群。

参数:无

返回值:

  • 类型:dict
  • 说明:包含集群最新状态的字典

7.6.2 停止集群(stop_cluster)

功能:停止运行中的集群。

参数:无

返回值:

  • 类型:dict
  • 说明:包含集群最新状态的字典

7.6.3 删除集群(delete_cluster)

功能:删除集群(不可恢复)。

参数:无

返回值:

  • 类型:dict
  • 说明:删除操作的结果信息

7.6.4 等待集群就绪(wait_cluster)

功能:等待集群达到指定状态。

参数:

  • status(str,必填):目标状态,可选值:"Running" 或 "Stopped"
  • min_available_workers(int,可选):最小可用 worker 数量,默认 1
  • timeout(int,可选):超时时间(秒),默认 120

返回值:无

异常:

  • ValueError:如果 status 参数不合法
  • Exception:如果超时或集群不存在

7.6.5 初始化连接(init)

功能:初始化与集群的 Ray 连接。

参数:无

返回值:无

说明:

  • 自动检查集群状态,必要时启动集群
  • 等待集群就绪后建立 Ray 连接
  • 如果已有 Ray 连接,会先关闭

7.6.6 关闭连接(shutdown)

功能:关闭与集群的 Ray 连接。

参数:无

返回值:无





\

评论
  • dai 模块可以后续开放吗?
  • DAI后续会开放
  • 可以,虽然我觉得用线上也不错。
{link}