DSPy 速查表
本页面包含常用模式的代码片段。
DSPy 数据加载器
导入并初始化 DataLoader 对象:
import dspy
from dspy.datasets import DataLoader
dl = DataLoader()
从 HuggingFace 数据集加载
code_alpaca = dl.from_huggingface("HuggingFaceH4/CodeAlpaca_20K")
通过调用相应拆分的键,您可以访问拆分的数据集:
train_dataset = code_alpaca['train']
test_dataset = code_alpaca['test']
从 HuggingFace 加载特定拆分
您还可以手动指定要包含的拆分,并将返回一个字典,其中键是您指定的拆分:
code_alpaca = dl.from_huggingface(
"HuggingFaceH4/CodeAlpaca_20K",
split = ["train", "test"],
)
print(f"数据集中的拆分: {code_alpaca.keys()}")
如果指定了单个拆分,则数据加载器将返回一个 dspy.Example
列表而不是字典:
code_alpaca = dl.from_huggingface(
"HuggingFaceH4/CodeAlpaca_20K",
split = "train",
)
print(f"拆分中的示例数量: {len(code_alpaca)}")
您也可以像处理 HuggingFace 数据集一样对拆分进行切片:
code_alpaca_80 = dl.from_huggingface(
"HuggingFaceH4/CodeAlpaca_20K",
split = "train[:80%]",
)
print(f"拆分中的示例数量: {len(code_alpaca_80)}")
code_alpaca_20_80 = dl.from_huggingface(
"HuggingFaceH4/CodeAlpaca_20K",
split = "train[20%:80%]",
)
print(f"拆分中的示例数量: {len(code_alpaca_20_80)}")
从 HuggingFace 加载特定子集
如果数据集有一个子集,您可以像在 HuggingFace 的 load_dataset
中那样将其作为参数传递:
gms8k = dl.from_huggingface(
"gsm8k",
"main",
input_keys = ("question",),
)
print(f"返回字典中的键: {list(gms8k.keys())}")
print(f"训练集中的示例数量: {len(gms8k['train'])}")
print(f"测试集中的示例数量: {len(gms8k['test'])}")
从 CSV 加载
dolly_100_dataset = dl.from_csv("dolly_subset_100_rows.csv",)
通过在参数中指定它们,您可以从 csv 中仅选择指定的列:
dolly_100_dataset = dl.from_csv(
"dolly_subset_100_rows.csv",
fields=("instruction", "context", "response"),
input_keys=("instruction", "context")
)
拆分 dspy.Example
列表
splits = dl.train_test_split(dataset, train_size=0.8) # `dataset` 是一个 `dspy.Example` 列表
train_dataset = splits['train']
test_dataset = splits['test']