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 KeysAPI 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],非必填,参数类型列表,默认为 Nonereturn_type: Optional[Any],非必填,返回值类型,默认为 Nonetype: Optional[Any],非必填,UDF 类型,默认为 Nonenull_handling: Optional[Any],非必填,NULL 值处理方式,默认为 Noneexception_handling: Optional[Any],非必填,异常处理方式,默认为 Noneside_effects: bool,非必填,是否有副作用,默认为 False
说明: 用于在 dai.query() 中传递自定义函数,SDK 会自动序列化函数代码并在云端执行
2.3 远程查询数据
方法名:dai.query()\n功能:远程查询\n参数:
sql: str,必填,mysql 查询语句udf_list:List[DaiUDF],非必填,UDF 函数列表,默认为 [ ]full_db_scan: bool,非必填, 是否允许全表查询,默认为 Falsefilters:Dict[str, List[Any]],非必填,过滤条件 {"column": ["value1", "value2"]},默认为 {}bind_relations:Dict[str, Any],非必填,绑定本地数据到 SQL 查询 {"name": DataFrame/Table},默认为 Noneparams:Dict[str, Any],非必填,查询参数 {"param_name": "value"},默认为 Nonecompression:bool,非必填,是否启用字符串压缩,默认为 Falseresource_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.Tablepartition_filter: Optional[Dict[str, Union[tuple, set]]],非必填,分区过滤条件,默认为 Nonetuple: 表示范围,如 ("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],非必填,查询约束条件,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 1000order_by使用 - 前缀表示降序,如 ["-created_at", "strategy_name"]include_fields用于只返回指定字段,减少数据传输量
返回字段:
id: 策略IDstrategy_name: 策略名称status: 策略状态created_at: 创建时间updated_at: 更新时间space_id: 空间IDaccount_id: 账户ID(dict格式)first_trading_day: 首个交易日benchmark_instrument: 基准代码
注意:此方法只返回用户自己创建的策略,不包含社区分享策略
3.3 获取分享策略列表
方法名:papertrading.list_shared()
功能:获取社区分享的模拟交易策略列表
参数:
space_id: Union[str, None],非必填,空间ID,默认为 Noneconstraints: Union[Dict[str, Any], None],非必填,查询约束条件,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Noneisrelative: bool,非必填,是否相对收益,默认为 Falsebenchmark: str,非必填,基准线代码,默认为 "000300.SH"page: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 20
参数说明:
space_id: 传入特定空间ID可查询该空间的分享策略,默认查询主空间isrelative:False: 返回绝对收益率True: 返回相对于 benchmark 的收益率
benchmark常用代码:000300.SH: 沪深300000905.SH: 中证500000852.SH: 中证1000000001.SH: 上证指数
constraints、order_by、include_fields: 用法同 list() 方法
返回:Dict[str, Any]
items: list,策略列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
id: 策略IDstrategy_id: 策略IDstrategy_name: 策略名称strategy_desc: 策略描述strategy_article: 策略文章labels: 策略标签datasource: 使用的数据源列表creator: 创建者IDcreated_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: 策略IDstrategy_name: 策略名称account_id: 账户ID(dict格式)space_id: 空间IDcreator: 创建者IDcreated_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],非必填,查询条件字典,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 100
返回:dict
items: list,订单列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
id: 订单IDstrategy_id: 策略IDaccount_type: 账户类型account_id: 账户IDtrading_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],非必填,查询条件字典,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 100
返回:dict
items: list,计划订单列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
planned_order_id: 计划订单IDstrategy_id: 策略IDaccount_type: 账户类型account_id: 账户IDtrading_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 字段若未提供,会自动从现有数据中获取
- 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:费用配置
- 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() 重新启动
- 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 连接。
参数:无
返回值:无
\