Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
authors = ["jeremiedb <jeremie.db@evovest.com>"]
name = "NeuroTreeModels"
uuid = "1db4e0a5-a364-4b0c-897c-2bd5a4a3a1f2"
version = "1.5.0"
version = "1.5.1"

[deps]
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
Expand Down
47 changes: 28 additions & 19 deletions benchmarks/Higgs-logloss.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ using AWS: AWSCredentials, AWSConfig, @service

@service S3
aws_creds = AWSCredentials(ENV["AWS_ACCESS_KEY_ID_JDB"], ENV["AWS_SECRET_ACCESS_KEY_JDB"])
aws_config = AWSConfig(; creds=aws_creds, region="ca-central-1")
aws_config = AWSConfig(; creds = aws_creds, region = "ca-central-1")
bucket = "jeremiedb"

path = "share/data/higgs/HIGGS.arrow"
df_tot = Connectors.read_arrow_aws(path; bucket="jeremiedb", aws_config)
df_tot = Connectors.read_arrow_aws(path; bucket = "jeremiedb", aws_config)

rename!(df_tot, "Column1" => "y")
feature_names = setdiff(names(df_tot), ["y"])
Expand All @@ -26,21 +26,21 @@ target_name = "y"

# transform!(df_tot, feature_names .=> percent_rank .=> feature_names)

dtrain = df_tot[1:end-1_000_000, :];
deval = df_tot[end-1_000_000+1:end-500_000, :];
dtest = df_tot[end-500_000+1:end, :];
dtrain = df_tot[1:(end-1_000_000), :];
deval = df_tot[(end-1_000_000+1):(end-500_000), :];
dtest = df_tot[(end-500_000+1):end, :];

config = NeuroTreeRegressor(
loss=:logloss,
nrounds=200,
depth=4,
lr=2e-3,
ntrees=128,
stack_size=2,
hidden_size=16,
batchsize=8092,
early_stopping_rounds=2,
device=:gpu,
loss = :logloss,
nrounds = 200,
depth = 4,
lr = 2e-3,
ntrees = 128,
stack_size = 2,
hidden_size = 16,
batchsize = 8092,
early_stopping_rounds = 2,
device = :gpu,
)

@time m = NeuroTreeModels.fit(
Expand All @@ -49,15 +49,25 @@ config = NeuroTreeRegressor(
deval,
target_name,
feature_names,
print_every_n=1
print_every_n = 1,
);

dinfer_eval = NeuroTreeModels.get_df_loader_infer(deval; feature_names, batchsize=config.batchsize, device=config.device);
dinfer_eval = NeuroTreeModels.get_df_loader_infer(
deval;
feature_names,
batchsize = config.batchsize,
device = config.device,
);
p_eval = m(dinfer_eval);
error_eval = 1 - mean(round.(Int, p_eval) .== deval.y)
@info "ERROR - deval" error_eval

dinfer_test = NeuroTreeModels.get_df_loader_infer(dtest; feature_names, batchsize=config.batchsize, device=config.device);
dinfer_test = NeuroTreeModels.get_df_loader_infer(
dtest;
feature_names,
batchsize = config.batchsize,
device = config.device,
);
p_test = m(dinfer_test);
error_test = 1 - mean(round.(Int, p_test) .== dtest.y)
@info "ERROR - dtest" error_test
Expand All @@ -82,4 +92,3 @@ error_test = 1 - mean(round.(Int, p_test) .== dtest.y)
# 34568.885039 seconds (7.51 G allocations: 1.109 TiB, 1.01% gc time)
# ┌ Info: ERROR - dtest
# └ error_test = 0.22153599999999996

42 changes: 24 additions & 18 deletions benchmarks/MSRank.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,24 @@ using AWS: AWSCredentials, AWSConfig, @service

@service S3
aws_creds = AWSCredentials(ENV["AWS_ACCESS_KEY_ID_JDB"], ENV["AWS_SECRET_ACCESS_KEY_JDB"])
aws_config = AWSConfig(; creds=aws_creds, region="ca-central-1")
aws_config = AWSConfig(; creds = aws_creds, region = "ca-central-1")
bucket = "jeremiedb"

# initial prep
function read_libsvm_aws(file::String; has_query=false, aws_config=AWSConfig())
raw = S3.get_object("jeremiedb", file, Dict("response-content-type" => "application/octet-stream"); aws_config)
function read_libsvm_aws(file::String; has_query = false, aws_config = AWSConfig())
raw = S3.get_object(
"jeremiedb",
file,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
return read_libsvm(raw; has_query)
end

@time train_raw = read_libsvm_aws("share/data/msrank/train.txt"; has_query=true, aws_config);
@time eval_raw = read_libsvm_aws("share/data/msrank/vali.txt"; has_query=true, aws_config);
@time test_raw = read_libsvm_aws("share/data/msrank/test.txt"; has_query=true, aws_config);
@time train_raw =
read_libsvm_aws("share/data/msrank/train.txt"; has_query = true, aws_config);
@time eval_raw = read_libsvm_aws("share/data/msrank/vali.txt"; has_query = true, aws_config);
@time test_raw = read_libsvm_aws("share/data/msrank/test.txt"; has_query = true, aws_config);

dtrain = DataFrame(train_raw[:x], :auto)
dtrain.y_raw = train_raw[:y]
Expand Down Expand Up @@ -53,17 +59,17 @@ transform!(deval, feature_names .=> percent_rank .=> feature_names)
transform!(dtest, feature_names .=> percent_rank .=> feature_names)

config = NeuroTreeRegressor(
loss=:mse,
nrounds=2,
actA=:tanh,
depth=4,
ntrees=64,
stack_size=2,
hidden_size=16,
batchsize=4096,
lr=3e-4,
early_stopping_rounds=3,
device=:gpu,
loss = :mse,
nrounds = 2,
actA = :tanh,
depth = 4,
ntrees = 64,
stack_size = 2,
hidden_size = 16,
batchsize = 4096,
lr = 3e-4,
early_stopping_rounds = 3,
device = :gpu,
)

@time m = NeuroTreeModels.fit(
Expand All @@ -72,7 +78,7 @@ config = NeuroTreeRegressor(
deval,
target_name,
feature_names,
print_every_n=1,
print_every_n = 1,
);

p_eval = m(deval);
Expand Down
57 changes: 36 additions & 21 deletions benchmarks/YEAR-gaussian.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,35 @@ using NeuroTreeModels
using AWS: AWSCredentials, AWSConfig, @service
@service S3
aws_creds = AWSCredentials(ENV["AWS_ACCESS_KEY_ID_JDB"], ENV["AWS_SECRET_ACCESS_KEY_JDB"])
aws_config = AWSConfig(; creds=aws_creds, region="ca-central-1")
aws_config = AWSConfig(; creds = aws_creds, region = "ca-central-1")

path = "share/data/year/year.csv"
raw = S3.get_object("jeremiedb", path, Dict("response-content-type" => "application/octet-stream"); aws_config)
df = DataFrame(CSV.File(raw, header=false))
raw = S3.get_object(
"jeremiedb",
path,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
df = DataFrame(CSV.File(raw, header = false))
df_tot = copy(df)

path = "share/data/year/year-train-idx.txt"
raw = S3.get_object("jeremiedb", path, Dict("response-content-type" => "application/octet-stream"); aws_config)
train_idx = DataFrame(CSV.File(raw, header=false))[:, 1] .+ 1
raw = S3.get_object(
"jeremiedb",
path,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
train_idx = DataFrame(CSV.File(raw, header = false))[:, 1] .+ 1

path = "share/data/year/year-eval-idx.txt"
raw = S3.get_object("jeremiedb", path, Dict("response-content-type" => "application/octet-stream"); aws_config)
eval_idx = DataFrame(CSV.File(raw, header=false))[:, 1] .+ 1
raw = S3.get_object(
"jeremiedb",
path,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
eval_idx = DataFrame(CSV.File(raw, header = false))[:, 1] .+ 1

transform!(df_tot, "Column1" => identity => "y_raw")
transform!(df_tot, "y_raw" => (x -> (x .- mean(x)) ./ std(x)) => "y_norm")
Expand All @@ -43,19 +58,19 @@ dtest = df_tot[(end-51630+1):end, :];
device = :gpu

config = NeuroTreeRegressor(;
loss=:gaussian_mle,
actA=:identity,
init_scale=0.0,
nrounds=200,
depth=4,
ntrees=32,
hidden_size=8,
stack_size=1,
MLE_tree_split=true,
batchsize=2048,
lr=1e-3,
early_stopping_rounds=2,
device
loss = :gaussian_mle,
actA = :identity,
init_scale = 0.0,
nrounds = 200,
depth = 4,
ntrees = 32,
hidden_size = 8,
stack_size = 1,
MLE_tree_split = true,
batchsize = 2048,
lr = 1e-3,
early_stopping_rounds = 2,
device,
)

@time m = NeuroTreeModels.fit(
Expand All @@ -64,7 +79,7 @@ config = NeuroTreeRegressor(;
deval,
target_name,
feature_names,
print_every_n=5
print_every_n = 5,
);

@time p_eval = m(deval; device);
Expand Down
57 changes: 36 additions & 21 deletions benchmarks/YEAR-mse.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,35 @@ using NeuroTreeModels
using AWS: AWSCredentials, AWSConfig, @service
@service S3
aws_creds = AWSCredentials(ENV["AWS_ACCESS_KEY_ID_JDB"], ENV["AWS_SECRET_ACCESS_KEY_JDB"])
aws_config = AWSConfig(; creds=aws_creds, region="ca-central-1")
aws_config = AWSConfig(; creds = aws_creds, region = "ca-central-1")

path = "share/data/year/year.csv"
raw = S3.get_object("jeremiedb", path, Dict("response-content-type" => "application/octet-stream"); aws_config)
df = DataFrame(CSV.File(raw, header=false))
raw = S3.get_object(
"jeremiedb",
path,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
df = DataFrame(CSV.File(raw, header = false))
df_tot = copy(df)

path = "share/data/year/year-train-idx.txt"
raw = S3.get_object("jeremiedb", path, Dict("response-content-type" => "application/octet-stream"); aws_config)
train_idx = DataFrame(CSV.File(raw, header=false))[:, 1] .+ 1
raw = S3.get_object(
"jeremiedb",
path,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
train_idx = DataFrame(CSV.File(raw, header = false))[:, 1] .+ 1

path = "share/data/year/year-eval-idx.txt"
raw = S3.get_object("jeremiedb", path, Dict("response-content-type" => "application/octet-stream"); aws_config)
eval_idx = DataFrame(CSV.File(raw, header=false))[:, 1] .+ 1
raw = S3.get_object(
"jeremiedb",
path,
Dict("response-content-type" => "application/octet-stream");
aws_config,
)
eval_idx = DataFrame(CSV.File(raw, header = false))[:, 1] .+ 1

transform!(df_tot, "Column1" => identity => "y_raw")
transform!(df_tot, "y_raw" => (x -> (x .- mean(x)) ./ std(x)) => "y_norm")
Expand All @@ -38,19 +53,19 @@ dtest = df_tot[(end-51630+1):end, :];
device = :gpu

config = NeuroTreeRegressor(;
loss=:mse,
actA=:identity,
scaler=true,
init_scale=0.1,
nrounds=200,
depth=4,
ntrees=32,
stack_size=1,
hidden_size=8,
batchsize=2048,
lr=1e-3,
early_stopping_rounds=2,
device
loss = :mse,
actA = :identity,
scaler = true,
init_scale = 0.1,
nrounds = 200,
depth = 4,
ntrees = 32,
stack_size = 1,
hidden_size = 8,
batchsize = 2048,
lr = 1e-3,
early_stopping_rounds = 2,
device,
)

@time m = NeuroTreeModels.fit(
Expand All @@ -59,7 +74,7 @@ config = NeuroTreeRegressor(;
deval,
target_name,
feature_names,
print_every_n=5
print_every_n = 5,
);

@time p_eval = m(deval; device);
Expand Down
Loading
Loading