Browse Source

[MNT] add requirements for text_workflow2

tags/v0.3.2
nju-xy 2 years ago
parent
commit
fb216a1607
5 changed files with 27 additions and 8 deletions
  1. +3
    -1
      examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py
  2. +1
    -1
      examples/dataset_text_workflow/example_files/example_init.py
  3. +4
    -0
      examples/dataset_text_workflow2/example_files/requirements.txt
  4. +17
    -4
      examples/dataset_text_workflow2/main.py
  5. +2
    -2
      learnware/market/easy/checker.py

+ 3
- 1
examples/dataset_pfs_workflow/pfs/pfs_cross_transfer.py View File

@@ -85,7 +85,9 @@ def get_split_errs(algo):
split = train_xs.shape[0] - proportion_list[tmp]
model.fit(
train_xs[split:,],
train_xs[
split:,
],
train_ys[split:],
eval_set=[(val_xs, val_ys)],
early_stopping_rounds=50,


+ 1
- 1
examples/dataset_text_workflow/example_files/example_init.py View File

@@ -19,7 +19,7 @@ class Model(BaseModel):
input_dim = 768
classifier_head = RobertaClassificationHead(num_classes=num_classes, input_dim=input_dim)
self.model = XLMR_BASE_ENCODER.get_model(head=classifier_head).to(self.device)
self.model.load_state_dict(torch.load(os.path.join(dir_path, "model.pth"), map_location=torch.device('cpu')))
self.model.load_state_dict(torch.load(os.path.join(dir_path, "model.pth"), map_location=torch.device("cpu")))

def fit(self, X: np.ndarray, y: np.ndarray):
pass


+ 4
- 0
examples/dataset_text_workflow2/example_files/requirements.txt View File

@@ -0,0 +1,4 @@
numpy
pickle
lightgbm
scikit-learn

+ 17
- 4
examples/dataset_text_workflow2/main.py View File

@@ -87,7 +87,9 @@ def prepare_model():
logger.info("Model saved to '%s' and '%s'" % (modelv_save_path, modell_save_path))


def prepare_learnware(data_path, modelv_path, modell_path, init_file_path, yaml_path, save_root, zip_name):
def prepare_learnware(
data_path, modelv_path, modell_path, init_file_path, yaml_path, env_file_path, save_root, zip_name
):
os.makedirs(save_root, exist_ok=True)
tmp_spec_path = os.path.join(save_root, "rkme.json")

@@ -96,6 +98,7 @@ def prepare_learnware(data_path, modelv_path, modell_path, init_file_path, yaml_

tmp_yaml_path = os.path.join(save_root, "learnware.yaml")
tmp_init_path = os.path.join(save_root, "__init__.py")
tmp_env_path = os.path.join(save_root, "requirements.txt")

with open(data_path, "rb") as f:
X = pickle.load(f)
@@ -115,6 +118,7 @@ def prepare_learnware(data_path, modelv_path, modell_path, init_file_path, yaml_

copyfile(yaml_path, tmp_yaml_path)
copyfile(init_file_path, tmp_init_path)
copyfile(env_file_path, tmp_env_path)
zip_file_name = os.path.join(learnware_pool_dir, "%s.zip" % (zip_name))
with zipfile.ZipFile(zip_file_name, "w", compression=zipfile.ZIP_DEFLATED) as zip_obj:
zip_obj.write(tmp_spec_path, "rkme.json")
@@ -124,6 +128,7 @@ def prepare_learnware(data_path, modelv_path, modell_path, init_file_path, yaml_

zip_obj.write(tmp_yaml_path, "learnware.yaml")
zip_obj.write(tmp_init_path, "__init__.py")
zip_obj.write(tmp_env_path, "requirements.txt")
rmtree(save_root)
logger.info("New Learnware Saved to %s" % (zip_file_name))
return zip_file_name
@@ -144,8 +149,16 @@ def prepare_market():

init_file_path = "./example_files/example_init.py"
yaml_file_path = "./example_files/example_yaml.yaml"
env_file_path = "./example_files/requirements.txt"
new_learnware_path = prepare_learnware(
data_path, modelv_path, modell_path, init_file_path, yaml_file_path, tmp_dir, "%s_%d" % (dataset, i)
data_path,
modelv_path,
modell_path,
init_file_path,
yaml_file_path,
env_file_path,
tmp_dir,
"%s_%d" % (dataset, i),
)
semantic_spec = semantic_specs[0]
semantic_spec["Name"]["Values"] = "learnware_%d" % (i)
@@ -239,6 +252,6 @@ def test_search(load_market=True):


if __name__ == "__main__":
prepare_data()
prepare_model()
# prepare_data()
# prepare_model()
test_search(load_market=False)

+ 2
- 2
learnware/market/easy/checker.py View File

@@ -51,7 +51,7 @@ class EasySemanticChecker(BaseChecker):
assert int(k) >= 0 and int(k) < dim, f"Dimension number in [0, {dim})"
assert isinstance(v, str), "Description must be string"

return EasySemanticChecker.NONUSABLE_LEARNWARE, 'EasySemanticChecker Success'
return EasySemanticChecker.NONUSABLE_LEARNWARE, "EasySemanticChecker Success"

except AssertionError as err:
logger.warning(f"semantic_specification is not valid due to {err}!")
@@ -128,7 +128,7 @@ class EasyStatChecker(BaseChecker):
except Exception:
message = f"The learnware {learnware.id} prediction is not avaliable!"
logger.warning(message)
message += '\r\n' + traceback.format_exc()
message += "\r\n" + traceback.format_exc()
return self.INVALID_LEARNWARE, message

if semantic_spec["Task"]["Values"][0] in ("Classification", "Regression"):


Loading…
Cancel
Save