机器学习和联邦学习库。
项目描述
目录
使用 Docker 镜像
有两个 docker 镜像,一个用于运行 Pod ( ghcr.io/bitfount/pod:stable),另一个用于运行建模任务 ( ghcr.io/bitfount/modeller:stable)。
这两个图像都需要config.yaml向它们提供一个文件,默认情况下它们会尝试从/mount/config/config.yamldocker 容器内加载它。您可以通过将卷挂载/绑定到容器来轻松提供此文件,执行此操作的方式可能因您的平台/环境(Docker/docker-compose/ECS)而异,如果您在执行此操作时遇到任何问题,请随时联系给我们。
或者,您可以使用docker cp将配置文件复制到已停止的容器中。
如果您使用的是 CSV 数据源,那么您还需要将数据安装到容器中,这需要安装在配置中指定的路径上,为简单起见,最简单的方法是将您的配置和 CSV 放在同一目录,然后将其挂载到容器中。
容器运行后,您需要检查日志并完成登录步骤,以允许您的容器通过 Bitfount 进行身份验证。该过程与在本地运行时(例如教程)相同,只是我们无法为您自动打开登录页面。
运行 Python 代码
安装
在哪里得到它
Python 包索引 (PyPI)中提供了最新发布版本的二进制安装程序。
pip install bitfount
如果您打算将该bitfount包与 Jupyter Notebooks 一起使用,我们建议您安装 splinter 包bitfount[tutorials],这将确保您运行兼容的 jupyter 依赖项。
pip install "bitfount[tutorials]"
从源安装
要从源代码安装bitfount,您需要创建一个 python 虚拟环境。
在bitfount目录中(与克隆 git repo 后找到此文件的目录相同),执行:
pip install -r requirements/requirements.in
这些要求设置为允许范围,但不保证适用于所有版本,尤其是最新版本。对于保证有效的这些要求的固定版本,请运行以下命令:
pip install -r requirements/requirements.txt
对于 MacOS,您还需要安装libomp:
brew install libomp
入门(教程)
为了运行教程,您还需要安装教程要求:
pip install -r requirements/requirements-tutorial.txt
要开始在联合设置中使用 Bitfount 包,我们建议您从我们的教程开始。运行jupyter notebook
并打开第一个教程:tutorials/01_running_a_pod.ipynb
联合训练脚本
已经提供了一些简单的脚本来从配置文件运行 Pod 或建模作业。
⚠️ 如果您从源安装(例如 from
git clone)运行,您将需要使用python -m scripts.<script_name>而不是bitfount <script_name>直接使用。
要运行 pod:
bitfount run_pod --path_to_config_yaml=<CONFIG_FILE>
要运行建模作业:
bitfount run_modeller --path_to_config_yaml=<CONFIG_FILE>
基本本地使用
除了提供在远程 pod 中使用数据的能力外,该软件包还支持本地 ML 训练。下面给出了一些用于此目的的示例代码。
1. 导入位元
import bitfount as bf
2.创建DataSource并加载数据
census_income = bf.CSVSource(
path="https://bitfount-hosted-downloads.s3.eu-west-2.amazonaws.com/bitfount-tutorials/census_income.csv",
ignore_cols=["fnlwgt"],
)
census_income.load_data()
3. 创建架构
schema = bf.BitfountSchema(
census_income,
table_name="census_income",
force_stypes={
"census_income": {
"categorical":[
"TARGET",
"workclass",
"marital-status",
"occupation",
"relationship",
"race",
"native-country",
"gender",
"education"
]
}
}
)
4. 转换数据
clean_data = bf.CleanDataTransformation()
processor = bf.TransformationProcessor([clean_data], schema.get_table_schema("census_income"))
census_income.data = processor.transform(census_income.data)
schema.add_datasource_tables(census_income, table_name="census_income")
5. 创建数据结构
census_income_data_structure=bf.DataStructure(
table="census_income",
target="TARGET",
)
6. 创建和训练模型
nn = bf.PyTorchTabularClassifier(
datastructure=census_income_data_structure,
schema=schema,
epochs=2,
batch_size=256,
optimizer=bf.Optimizer("RAdam", {"lr": 0.001}),
)
nn.fit(census_income)
nn.serialize("demo_task_model.pt")
7. 评估
preds, target = nn.evaluate()
metrics = bf.MetricCollection.create_from_model(nn)
results = metrics.compute(target, preds)
print(results)
8. 断言结果
import numpy as np
assert nn._validation_results[-1]["validation_loss"] is not np.nan
assert results["AUC"] > 0.7
执照
该软件的许可证可在LICENSE文件中找到。这可以在 Github 存储库以及 Docker 映像中找到。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。