FLAML 2.3.4__tar.gz → 2.3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. {flaml-2.3.4 → FLAML-2.3.5}/FLAML.egg-info/PKG-INFO +6 -116
  2. {flaml-2.3.4 → FLAML-2.3.5}/FLAML.egg-info/SOURCES.txt +1 -0
  3. {flaml-2.3.4 → FLAML-2.3.5}/FLAML.egg-info/requires.txt +1 -1
  4. {flaml-2.3.4 → FLAML-2.3.5}/PKG-INFO +6 -116
  5. {flaml-2.3.4 → FLAML-2.3.5}/README.md +1 -1
  6. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/automl.py +82 -12
  7. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/contrib/histgb.py +2 -2
  8. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/data.py +335 -2
  9. FLAML-2.3.5/flaml/automl/logger.py +37 -0
  10. {flaml-2.3.4 → FLAML-2.3.5}/flaml/fabric/mlflow.py +393 -74
  11. FLAML-2.3.5/flaml/tune/logger.py +37 -0
  12. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/spark/utils.py +22 -0
  13. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/tune.py +8 -8
  14. FLAML-2.3.5/flaml/version.py +1 -0
  15. {flaml-2.3.4 → FLAML-2.3.5}/setup.py +2 -3
  16. flaml-2.3.4/flaml/automl/logger.py +0 -7
  17. flaml-2.3.4/flaml/version.py +0 -1
  18. {flaml-2.3.4 → FLAML-2.3.5}/FLAML.egg-info/dependency_links.txt +0 -0
  19. {flaml-2.3.4 → FLAML-2.3.5}/FLAML.egg-info/top_level.txt +0 -0
  20. {flaml-2.3.4 → FLAML-2.3.5}/LICENSE +0 -0
  21. {flaml-2.3.4 → FLAML-2.3.5}/NOTICE.md +0 -0
  22. {flaml-2.3.4 → FLAML-2.3.5}/flaml/__init__.py +0 -0
  23. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/__init__.py +0 -0
  24. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/agentchat/__init__.py +0 -0
  25. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/agentchat/agent.py +0 -0
  26. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/agentchat/assistant_agent.py +0 -0
  27. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/agentchat/conversable_agent.py +0 -0
  28. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/agentchat/groupchat.py +0 -0
  29. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/agentchat/user_proxy_agent.py +0 -0
  30. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/code_utils.py +0 -0
  31. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/extensions/__init__.py +0 -0
  32. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/math_utils.py +0 -0
  33. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/oai/__init__.py +0 -0
  34. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/oai/completion.py +0 -0
  35. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/oai/openai_utils.py +0 -0
  36. {flaml-2.3.4 → FLAML-2.3.5}/flaml/autogen/retrieve_utils.py +0 -0
  37. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/__init__.py +0 -0
  38. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/contrib/__init__.py +0 -0
  39. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/ml.py +0 -0
  40. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/model.py +0 -0
  41. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/__init__.py +0 -0
  42. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/huggingface/__init__.py +0 -0
  43. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/huggingface/data_collator.py +0 -0
  44. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/huggingface/trainer.py +0 -0
  45. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/huggingface/training_args.py +0 -0
  46. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/huggingface/utils.py +0 -0
  47. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/nlp/utils.py +0 -0
  48. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/spark/__init__.py +0 -0
  49. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/spark/metrics.py +0 -0
  50. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/spark/utils.py +0 -0
  51. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/state.py +0 -0
  52. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/task/__init__.py +0 -0
  53. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/task/factory.py +0 -0
  54. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/task/generic_task.py +0 -0
  55. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/task/task.py +0 -0
  56. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/task/time_series_task.py +0 -0
  57. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/__init__.py +0 -0
  58. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/feature.py +0 -0
  59. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/sklearn.py +0 -0
  60. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/tcn.py +0 -0
  61. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/tft.py +0 -0
  62. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/ts_data.py +0 -0
  63. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/time_series/ts_model.py +0 -0
  64. {flaml-2.3.4 → FLAML-2.3.5}/flaml/automl/training_log.py +0 -0
  65. {flaml-2.3.4 → FLAML-2.3.5}/flaml/config.py +0 -0
  66. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/__init__.py +0 -0
  67. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/all/binary.json +0 -0
  68. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/all/multiclass.json +0 -0
  69. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/all/regression.json +0 -0
  70. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/estimator.py +0 -0
  71. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/extra_tree/binary.json +0 -0
  72. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/extra_tree/multiclass.json +0 -0
  73. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/extra_tree/regression.json +0 -0
  74. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/greedy.py +0 -0
  75. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/lgbm/binary.json +0 -0
  76. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/lgbm/multiclass.json +0 -0
  77. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/lgbm/regression.json +0 -0
  78. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/portfolio.py +0 -0
  79. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/regret.py +0 -0
  80. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/rf/binary.json +0 -0
  81. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/rf/multiclass.json +0 -0
  82. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/rf/regression.json +0 -0
  83. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/suggest.py +0 -0
  84. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/xgb_limitdepth/binary.json +0 -0
  85. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/xgb_limitdepth/multiclass.json +0 -0
  86. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/xgb_limitdepth/regression.json +0 -0
  87. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/xgboost/binary.json +0 -0
  88. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/xgboost/multiclass.json +0 -0
  89. {flaml-2.3.4 → FLAML-2.3.5}/flaml/default/xgboost/regression.json +0 -0
  90. {flaml-2.3.4 → FLAML-2.3.5}/flaml/fabric/__init__.py +0 -0
  91. {flaml-2.3.4 → FLAML-2.3.5}/flaml/ml.py +0 -0
  92. {flaml-2.3.4 → FLAML-2.3.5}/flaml/onlineml/__init__.py +0 -0
  93. {flaml-2.3.4 → FLAML-2.3.5}/flaml/onlineml/autovw.py +0 -0
  94. {flaml-2.3.4 → FLAML-2.3.5}/flaml/onlineml/trial.py +0 -0
  95. {flaml-2.3.4 → FLAML-2.3.5}/flaml/onlineml/trial_runner.py +0 -0
  96. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/__init__.py +0 -0
  97. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/analysis.py +0 -0
  98. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/result.py +0 -0
  99. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/sample.py +0 -0
  100. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/scheduler/__init__.py +0 -0
  101. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/scheduler/online_scheduler.py +0 -0
  102. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/scheduler/trial_scheduler.py +0 -0
  103. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/__init__.py +0 -0
  104. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/blendsearch.py +0 -0
  105. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/cfo_cat.py +0 -0
  106. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/flow2.py +0 -0
  107. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/online_searcher.py +0 -0
  108. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/search_thread.py +0 -0
  109. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/suggestion.py +0 -0
  110. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/searcher/variant_generator.py +0 -0
  111. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/space.py +0 -0
  112. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/spark/__init__.py +0 -0
  113. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/trial.py +0 -0
  114. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/trial_runner.py +0 -0
  115. {flaml-2.3.4 → FLAML-2.3.5}/flaml/tune/utils.py +0 -0
  116. {flaml-2.3.4 → FLAML-2.3.5}/pyproject.toml +0 -0
  117. {flaml-2.3.4 → FLAML-2.3.5}/setup.cfg +0 -0
  118. {flaml-2.3.4 → FLAML-2.3.5}/test/test_autovw.py +0 -0
  119. {flaml-2.3.4 → FLAML-2.3.5}/test/test_conda_distribution.py +0 -0
  120. {flaml-2.3.4 → FLAML-2.3.5}/test/test_gpu.py +0 -0
  121. {flaml-2.3.4 → FLAML-2.3.5}/test/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FLAML
3
- Version: 2.3.4
3
+ Version: 2.3.5
4
4
  Summary: A fast library for automated machine learning and tuning
5
5
  Home-page: https://github.com/microsoft/FLAML
6
6
  Author: Microsoft Corporation
@@ -8,144 +8,34 @@ Author-email: hpo@microsoft.com
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Operating System :: OS Independent
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.8
12
11
  Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
- Requires-Python: >=3.8
14
+ Requires-Python: >=3.9
16
15
  Description-Content-Type: text/markdown
17
- License-File: LICENSE
18
- License-File: NOTICE.md
19
- Requires-Dist: NumPy>=1.17
20
16
  Provides-Extra: automl
21
- Requires-Dist: lightgbm>=2.3.1; extra == "automl"
22
- Requires-Dist: xgboost<3.0.0,>=0.90; extra == "automl"
23
- Requires-Dist: scipy>=1.4.1; extra == "automl"
24
- Requires-Dist: pandas>=1.1.4; extra == "automl"
25
- Requires-Dist: scikit-learn>=1.0.0; extra == "automl"
26
17
  Provides-Extra: notebook
27
- Requires-Dist: jupyter; extra == "notebook"
28
18
  Provides-Extra: spark
29
- Requires-Dist: pyspark>=3.2.0; extra == "spark"
30
- Requires-Dist: joblibspark>=0.5.0; extra == "spark"
31
- Requires-Dist: joblib<=1.3.2; extra == "spark"
32
19
  Provides-Extra: test
33
- Requires-Dist: jupyter; extra == "test"
34
- Requires-Dist: lightgbm>=2.3.1; extra == "test"
35
- Requires-Dist: xgboost<2.0.0,>=0.90; extra == "test"
36
- Requires-Dist: scipy>=1.4.1; extra == "test"
37
- Requires-Dist: pandas<2.0.0,>=1.1.4; python_version < "3.10" and extra == "test"
38
- Requires-Dist: pandas>=1.1.4; python_version >= "3.10" and extra == "test"
39
- Requires-Dist: scikit-learn>=1.0.0; extra == "test"
40
- Requires-Dist: thop; extra == "test"
41
- Requires-Dist: pytest>=6.1.1; extra == "test"
42
- Requires-Dist: coverage>=5.3; extra == "test"
43
- Requires-Dist: pre-commit; extra == "test"
44
- Requires-Dist: torch; extra == "test"
45
- Requires-Dist: torchvision; extra == "test"
46
- Requires-Dist: catboost<1.2,>=0.26; python_version < "3.11" and extra == "test"
47
- Requires-Dist: catboost>=0.26; python_version >= "3.11" and extra == "test"
48
- Requires-Dist: rgf-python; extra == "test"
49
- Requires-Dist: optuna<=3.6.1,>=2.8.0; extra == "test"
50
- Requires-Dist: openml; extra == "test"
51
- Requires-Dist: statsmodels>=0.12.2; extra == "test"
52
- Requires-Dist: psutil==5.8.0; extra == "test"
53
- Requires-Dist: dataclasses; extra == "test"
54
- Requires-Dist: transformers[torch]==4.26; extra == "test"
55
- Requires-Dist: datasets; extra == "test"
56
- Requires-Dist: nltk<=3.8.1; extra == "test"
57
- Requires-Dist: rouge_score; extra == "test"
58
- Requires-Dist: hcrystalball==0.1.10; extra == "test"
59
- Requires-Dist: seqeval; extra == "test"
60
- Requires-Dist: pytorch-forecasting<=0.10.1,>=0.9.0; python_version < "3.11" and extra == "test"
61
- Requires-Dist: mlflow==2.15.1; extra == "test"
62
- Requires-Dist: joblibspark>=0.5.0; extra == "test"
63
- Requires-Dist: joblib<=1.3.2; extra == "test"
64
- Requires-Dist: nbconvert; extra == "test"
65
- Requires-Dist: nbformat; extra == "test"
66
- Requires-Dist: ipykernel; extra == "test"
67
- Requires-Dist: pytorch-lightning<1.9.1; extra == "test"
68
- Requires-Dist: tensorboardX==2.6; extra == "test"
69
- Requires-Dist: requests<2.29.0; extra == "test"
70
- Requires-Dist: packaging; extra == "test"
71
- Requires-Dist: pydantic==1.10.9; extra == "test"
72
- Requires-Dist: sympy; extra == "test"
73
- Requires-Dist: wolframalpha; extra == "test"
74
- Requires-Dist: dill; extra == "test"
75
20
  Provides-Extra: catboost
76
- Requires-Dist: catboost<1.2,>=0.26; python_version < "3.11" and extra == "catboost"
77
- Requires-Dist: catboost<=1.2.5,>=0.26; python_version >= "3.11" and extra == "catboost"
78
21
  Provides-Extra: blendsearch
79
- Requires-Dist: optuna<=3.6.1,>=2.8.0; extra == "blendsearch"
80
- Requires-Dist: packaging; extra == "blendsearch"
81
22
  Provides-Extra: ray
82
- Requires-Dist: ray[tune]~=1.13; extra == "ray"
83
23
  Provides-Extra: azureml
84
- Requires-Dist: azureml-mlflow; extra == "azureml"
85
24
  Provides-Extra: nni
86
- Requires-Dist: nni; extra == "nni"
87
25
  Provides-Extra: vw
88
- Requires-Dist: vowpalwabbit<9.0.0,>=8.10.0; extra == "vw"
89
- Requires-Dist: scikit-learn; extra == "vw"
90
26
  Provides-Extra: hf
91
- Requires-Dist: transformers[torch]==4.26; extra == "hf"
92
- Requires-Dist: datasets; extra == "hf"
93
- Requires-Dist: nltk<=3.8.1; extra == "hf"
94
- Requires-Dist: rouge_score; extra == "hf"
95
- Requires-Dist: seqeval; extra == "hf"
96
27
  Provides-Extra: nlp
97
- Requires-Dist: transformers[torch]==4.26; extra == "nlp"
98
- Requires-Dist: datasets; extra == "nlp"
99
- Requires-Dist: nltk<=3.8.1; extra == "nlp"
100
- Requires-Dist: rouge_score; extra == "nlp"
101
- Requires-Dist: seqeval; extra == "nlp"
102
- Provides-Extra: ts-forecast
103
- Requires-Dist: holidays<0.14; extra == "ts-forecast"
104
- Requires-Dist: prophet>=1.0.1; extra == "ts-forecast"
105
- Requires-Dist: statsmodels>=0.12.2; extra == "ts-forecast"
106
- Requires-Dist: hcrystalball==0.1.10; extra == "ts-forecast"
28
+ Provides-Extra: ts_forecast
107
29
  Provides-Extra: forecast
108
- Requires-Dist: holidays<0.14; extra == "forecast"
109
- Requires-Dist: prophet>=1.0.1; extra == "forecast"
110
- Requires-Dist: statsmodels>=0.12.2; extra == "forecast"
111
- Requires-Dist: hcrystalball==0.1.10; extra == "forecast"
112
- Requires-Dist: pytorch-forecasting>=0.9.0; python_version < "3.11" and extra == "forecast"
113
- Requires-Dist: pytorch-lightning==1.9.0; extra == "forecast"
114
- Requires-Dist: tensorboardX==2.6; extra == "forecast"
115
30
  Provides-Extra: benchmark
116
- Requires-Dist: catboost>=0.26; extra == "benchmark"
117
- Requires-Dist: psutil==5.8.0; extra == "benchmark"
118
- Requires-Dist: xgboost==1.3.3; extra == "benchmark"
119
- Requires-Dist: pandas==1.1.4; extra == "benchmark"
120
31
  Provides-Extra: openai
121
- Requires-Dist: openai==0.27.8; extra == "openai"
122
- Requires-Dist: diskcache; extra == "openai"
123
32
  Provides-Extra: autogen
124
- Requires-Dist: openai==0.27.8; extra == "autogen"
125
- Requires-Dist: diskcache; extra == "autogen"
126
- Requires-Dist: termcolor; extra == "autogen"
127
33
  Provides-Extra: mathchat
128
- Requires-Dist: openai==0.27.8; extra == "mathchat"
129
- Requires-Dist: diskcache; extra == "mathchat"
130
- Requires-Dist: termcolor; extra == "mathchat"
131
- Requires-Dist: sympy; extra == "mathchat"
132
- Requires-Dist: pydantic==1.10.9; extra == "mathchat"
133
- Requires-Dist: wolframalpha; extra == "mathchat"
134
34
  Provides-Extra: retrievechat
135
- Requires-Dist: openai==0.27.8; extra == "retrievechat"
136
- Requires-Dist: diskcache; extra == "retrievechat"
137
- Requires-Dist: termcolor; extra == "retrievechat"
138
- Requires-Dist: chromadb; extra == "retrievechat"
139
- Requires-Dist: tiktoken; extra == "retrievechat"
140
- Requires-Dist: sentence_transformers; extra == "retrievechat"
141
35
  Provides-Extra: synapse
142
- Requires-Dist: joblibspark>=0.5.0; extra == "synapse"
143
- Requires-Dist: optuna<=3.6.1,>=2.8.0; extra == "synapse"
144
- Requires-Dist: pyspark>=3.2.0; extra == "synapse"
145
36
  Provides-Extra: autozero
146
- Requires-Dist: scikit-learn; extra == "autozero"
147
- Requires-Dist: pandas; extra == "autozero"
148
- Requires-Dist: packaging; extra == "autozero"
37
+ License-File: LICENSE
38
+ License-File: NOTICE.md
149
39
 
150
40
  [![PyPI version](https://badge.fury.io/py/FLAML.svg)](https://badge.fury.io/py/FLAML)
151
41
  ![Conda version](https://img.shields.io/conda/vn/conda-forge/flaml)
@@ -189,7 +79,7 @@ FLAML has a .NET implementation in [ML.NET](http://dot.net/ml), an open-source,
189
79
 
190
80
  ## Installation
191
81
 
192
- FLAML requires **Python version >= 3.8**. It can be installed from pip:
82
+ FLAML requires **Python version >= 3.9**. It can be installed from pip:
193
83
 
194
84
  ```bash
195
85
  pip install flaml
@@ -90,6 +90,7 @@ flaml/onlineml/trial.py
90
90
  flaml/onlineml/trial_runner.py
91
91
  flaml/tune/__init__.py
92
92
  flaml/tune/analysis.py
93
+ flaml/tune/logger.py
93
94
  flaml/tune/result.py
94
95
  flaml/tune/sample.py
95
96
  flaml/tune/space.py
@@ -121,7 +121,7 @@ statsmodels>=0.12.2
121
121
  psutil==5.8.0
122
122
  dataclasses
123
123
  transformers[torch]==4.26
124
- datasets
124
+ datasets<=3.5.0
125
125
  nltk<=3.8.1
126
126
  rouge_score
127
127
  hcrystalball==0.1.10
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FLAML
3
- Version: 2.3.4
3
+ Version: 2.3.5
4
4
  Summary: A fast library for automated machine learning and tuning
5
5
  Home-page: https://github.com/microsoft/FLAML
6
6
  Author: Microsoft Corporation
@@ -8,144 +8,34 @@ Author-email: hpo@microsoft.com
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Operating System :: OS Independent
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.8
12
11
  Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
- Requires-Python: >=3.8
14
+ Requires-Python: >=3.9
16
15
  Description-Content-Type: text/markdown
17
- License-File: LICENSE
18
- License-File: NOTICE.md
19
- Requires-Dist: NumPy>=1.17
20
16
  Provides-Extra: automl
21
- Requires-Dist: lightgbm>=2.3.1; extra == "automl"
22
- Requires-Dist: xgboost<3.0.0,>=0.90; extra == "automl"
23
- Requires-Dist: scipy>=1.4.1; extra == "automl"
24
- Requires-Dist: pandas>=1.1.4; extra == "automl"
25
- Requires-Dist: scikit-learn>=1.0.0; extra == "automl"
26
17
  Provides-Extra: notebook
27
- Requires-Dist: jupyter; extra == "notebook"
28
18
  Provides-Extra: spark
29
- Requires-Dist: pyspark>=3.2.0; extra == "spark"
30
- Requires-Dist: joblibspark>=0.5.0; extra == "spark"
31
- Requires-Dist: joblib<=1.3.2; extra == "spark"
32
19
  Provides-Extra: test
33
- Requires-Dist: jupyter; extra == "test"
34
- Requires-Dist: lightgbm>=2.3.1; extra == "test"
35
- Requires-Dist: xgboost<2.0.0,>=0.90; extra == "test"
36
- Requires-Dist: scipy>=1.4.1; extra == "test"
37
- Requires-Dist: pandas<2.0.0,>=1.1.4; python_version < "3.10" and extra == "test"
38
- Requires-Dist: pandas>=1.1.4; python_version >= "3.10" and extra == "test"
39
- Requires-Dist: scikit-learn>=1.0.0; extra == "test"
40
- Requires-Dist: thop; extra == "test"
41
- Requires-Dist: pytest>=6.1.1; extra == "test"
42
- Requires-Dist: coverage>=5.3; extra == "test"
43
- Requires-Dist: pre-commit; extra == "test"
44
- Requires-Dist: torch; extra == "test"
45
- Requires-Dist: torchvision; extra == "test"
46
- Requires-Dist: catboost<1.2,>=0.26; python_version < "3.11" and extra == "test"
47
- Requires-Dist: catboost>=0.26; python_version >= "3.11" and extra == "test"
48
- Requires-Dist: rgf-python; extra == "test"
49
- Requires-Dist: optuna<=3.6.1,>=2.8.0; extra == "test"
50
- Requires-Dist: openml; extra == "test"
51
- Requires-Dist: statsmodels>=0.12.2; extra == "test"
52
- Requires-Dist: psutil==5.8.0; extra == "test"
53
- Requires-Dist: dataclasses; extra == "test"
54
- Requires-Dist: transformers[torch]==4.26; extra == "test"
55
- Requires-Dist: datasets; extra == "test"
56
- Requires-Dist: nltk<=3.8.1; extra == "test"
57
- Requires-Dist: rouge_score; extra == "test"
58
- Requires-Dist: hcrystalball==0.1.10; extra == "test"
59
- Requires-Dist: seqeval; extra == "test"
60
- Requires-Dist: pytorch-forecasting<=0.10.1,>=0.9.0; python_version < "3.11" and extra == "test"
61
- Requires-Dist: mlflow==2.15.1; extra == "test"
62
- Requires-Dist: joblibspark>=0.5.0; extra == "test"
63
- Requires-Dist: joblib<=1.3.2; extra == "test"
64
- Requires-Dist: nbconvert; extra == "test"
65
- Requires-Dist: nbformat; extra == "test"
66
- Requires-Dist: ipykernel; extra == "test"
67
- Requires-Dist: pytorch-lightning<1.9.1; extra == "test"
68
- Requires-Dist: tensorboardX==2.6; extra == "test"
69
- Requires-Dist: requests<2.29.0; extra == "test"
70
- Requires-Dist: packaging; extra == "test"
71
- Requires-Dist: pydantic==1.10.9; extra == "test"
72
- Requires-Dist: sympy; extra == "test"
73
- Requires-Dist: wolframalpha; extra == "test"
74
- Requires-Dist: dill; extra == "test"
75
20
  Provides-Extra: catboost
76
- Requires-Dist: catboost<1.2,>=0.26; python_version < "3.11" and extra == "catboost"
77
- Requires-Dist: catboost<=1.2.5,>=0.26; python_version >= "3.11" and extra == "catboost"
78
21
  Provides-Extra: blendsearch
79
- Requires-Dist: optuna<=3.6.1,>=2.8.0; extra == "blendsearch"
80
- Requires-Dist: packaging; extra == "blendsearch"
81
22
  Provides-Extra: ray
82
- Requires-Dist: ray[tune]~=1.13; extra == "ray"
83
23
  Provides-Extra: azureml
84
- Requires-Dist: azureml-mlflow; extra == "azureml"
85
24
  Provides-Extra: nni
86
- Requires-Dist: nni; extra == "nni"
87
25
  Provides-Extra: vw
88
- Requires-Dist: vowpalwabbit<9.0.0,>=8.10.0; extra == "vw"
89
- Requires-Dist: scikit-learn; extra == "vw"
90
26
  Provides-Extra: hf
91
- Requires-Dist: transformers[torch]==4.26; extra == "hf"
92
- Requires-Dist: datasets; extra == "hf"
93
- Requires-Dist: nltk<=3.8.1; extra == "hf"
94
- Requires-Dist: rouge_score; extra == "hf"
95
- Requires-Dist: seqeval; extra == "hf"
96
27
  Provides-Extra: nlp
97
- Requires-Dist: transformers[torch]==4.26; extra == "nlp"
98
- Requires-Dist: datasets; extra == "nlp"
99
- Requires-Dist: nltk<=3.8.1; extra == "nlp"
100
- Requires-Dist: rouge_score; extra == "nlp"
101
- Requires-Dist: seqeval; extra == "nlp"
102
- Provides-Extra: ts-forecast
103
- Requires-Dist: holidays<0.14; extra == "ts-forecast"
104
- Requires-Dist: prophet>=1.0.1; extra == "ts-forecast"
105
- Requires-Dist: statsmodels>=0.12.2; extra == "ts-forecast"
106
- Requires-Dist: hcrystalball==0.1.10; extra == "ts-forecast"
28
+ Provides-Extra: ts_forecast
107
29
  Provides-Extra: forecast
108
- Requires-Dist: holidays<0.14; extra == "forecast"
109
- Requires-Dist: prophet>=1.0.1; extra == "forecast"
110
- Requires-Dist: statsmodels>=0.12.2; extra == "forecast"
111
- Requires-Dist: hcrystalball==0.1.10; extra == "forecast"
112
- Requires-Dist: pytorch-forecasting>=0.9.0; python_version < "3.11" and extra == "forecast"
113
- Requires-Dist: pytorch-lightning==1.9.0; extra == "forecast"
114
- Requires-Dist: tensorboardX==2.6; extra == "forecast"
115
30
  Provides-Extra: benchmark
116
- Requires-Dist: catboost>=0.26; extra == "benchmark"
117
- Requires-Dist: psutil==5.8.0; extra == "benchmark"
118
- Requires-Dist: xgboost==1.3.3; extra == "benchmark"
119
- Requires-Dist: pandas==1.1.4; extra == "benchmark"
120
31
  Provides-Extra: openai
121
- Requires-Dist: openai==0.27.8; extra == "openai"
122
- Requires-Dist: diskcache; extra == "openai"
123
32
  Provides-Extra: autogen
124
- Requires-Dist: openai==0.27.8; extra == "autogen"
125
- Requires-Dist: diskcache; extra == "autogen"
126
- Requires-Dist: termcolor; extra == "autogen"
127
33
  Provides-Extra: mathchat
128
- Requires-Dist: openai==0.27.8; extra == "mathchat"
129
- Requires-Dist: diskcache; extra == "mathchat"
130
- Requires-Dist: termcolor; extra == "mathchat"
131
- Requires-Dist: sympy; extra == "mathchat"
132
- Requires-Dist: pydantic==1.10.9; extra == "mathchat"
133
- Requires-Dist: wolframalpha; extra == "mathchat"
134
34
  Provides-Extra: retrievechat
135
- Requires-Dist: openai==0.27.8; extra == "retrievechat"
136
- Requires-Dist: diskcache; extra == "retrievechat"
137
- Requires-Dist: termcolor; extra == "retrievechat"
138
- Requires-Dist: chromadb; extra == "retrievechat"
139
- Requires-Dist: tiktoken; extra == "retrievechat"
140
- Requires-Dist: sentence_transformers; extra == "retrievechat"
141
35
  Provides-Extra: synapse
142
- Requires-Dist: joblibspark>=0.5.0; extra == "synapse"
143
- Requires-Dist: optuna<=3.6.1,>=2.8.0; extra == "synapse"
144
- Requires-Dist: pyspark>=3.2.0; extra == "synapse"
145
36
  Provides-Extra: autozero
146
- Requires-Dist: scikit-learn; extra == "autozero"
147
- Requires-Dist: pandas; extra == "autozero"
148
- Requires-Dist: packaging; extra == "autozero"
37
+ License-File: LICENSE
38
+ License-File: NOTICE.md
149
39
 
150
40
  [![PyPI version](https://badge.fury.io/py/FLAML.svg)](https://badge.fury.io/py/FLAML)
151
41
  ![Conda version](https://img.shields.io/conda/vn/conda-forge/flaml)
@@ -189,7 +79,7 @@ FLAML has a .NET implementation in [ML.NET](http://dot.net/ml), an open-source,
189
79
 
190
80
  ## Installation
191
81
 
192
- FLAML requires **Python version >= 3.8**. It can be installed from pip:
82
+ FLAML requires **Python version >= 3.9**. It can be installed from pip:
193
83
 
194
84
  ```bash
195
85
  pip install flaml
@@ -40,7 +40,7 @@ FLAML has a .NET implementation in [ML.NET](http://dot.net/ml), an open-source,
40
40
 
41
41
  ## Installation
42
42
 
43
- FLAML requires **Python version >= 3.8**. It can be installed from pip:
43
+ FLAML requires **Python version >= 3.9**. It can be installed from pip:
44
44
 
45
45
  ```bash
46
46
  pip install flaml
@@ -10,6 +10,7 @@ import os
10
10
  import random
11
11
  import sys
12
12
  import time
13
+ from concurrent.futures import as_completed
13
14
  from functools import partial
14
15
  from typing import Callable, List, Optional, Union
15
16
 
@@ -187,9 +188,16 @@ class AutoML(BaseEstimator):
187
188
  mem_thres: A float of the memory size constraint in bytes.
188
189
  pred_time_limit: A float of the prediction latency constraint in seconds.
189
190
  It refers to the average prediction time per row in validation data.
190
- train_time_limit: A float of the training time constraint in seconds.
191
+ train_time_limit: None or a float of the training time constraint in seconds for each trial.
192
+ Only valid for sequential search.
191
193
  verbose: int, default=3 | Controls the verbosity, higher means more
192
194
  messages.
195
+ verbose=0: logger level = CRITICAL
196
+ verbose=1: logger level = ERROR
197
+ verbose=2: logger level = WARNING
198
+ verbose=3: logger level = INFO
199
+ verbose=4: logger level = DEBUG
200
+ verbose>5: logger level = NOTSET
193
201
  retrain_full: bool or str, default=True | whether to retrain the
194
202
  selected model on the full training data when using holdout.
195
203
  True - retrain only after search finishes; False - no retraining;
@@ -424,6 +432,8 @@ class AutoML(BaseEstimator):
424
432
  If `model_history` was set to True, then the returned model is trained.
425
433
  """
426
434
  state = self._search_states.get(estimator_name)
435
+ if state and estimator_name == self._best_estimator:
436
+ return self.model
427
437
  return state and getattr(state, "trained_estimator", None)
428
438
 
429
439
  @property
@@ -1332,7 +1342,8 @@ class AutoML(BaseEstimator):
1332
1342
  mem_thres: A float of the memory size constraint in bytes.
1333
1343
  pred_time_limit: A float of the prediction latency constraint in seconds.
1334
1344
  It refers to the average prediction time per row in validation data.
1335
- train_time_limit: None or a float of the training time constraint in seconds.
1345
+ train_time_limit: None or a float of the training time constraint in seconds for each trial.
1346
+ Only valid for sequential search.
1336
1347
  X_val: None or a numpy array or a pandas dataframe of validation data.
1337
1348
  y_val: None or a numpy array or a pandas series of validation labels.
1338
1349
  sample_weight_val: None or a numpy array of the sample weight of
@@ -1345,6 +1356,12 @@ class AutoML(BaseEstimator):
1345
1356
  for training data.
1346
1357
  verbose: int, default=3 | Controls the verbosity, higher means more
1347
1358
  messages.
1359
+ verbose=0: logger level = CRITICAL
1360
+ verbose=1: logger level = ERROR
1361
+ verbose=2: logger level = WARNING
1362
+ verbose=3: logger level = INFO
1363
+ verbose=4: logger level = DEBUG
1364
+ verbose>5: logger level = NOTSET
1348
1365
  retrain_full: bool or str, default=True | whether to retrain the
1349
1366
  selected model on the full training data when using holdout.
1350
1367
  True - retrain only after search finishes; False - no retraining;
@@ -1623,6 +1640,13 @@ class AutoML(BaseEstimator):
1623
1640
  _ch.setFormatter(logger_formatter)
1624
1641
  logger.addHandler(_ch)
1625
1642
 
1643
+ if model_history:
1644
+ logger.warning(
1645
+ "With `model_history` set to `True` by default, all intermediate models are retained in memory, "
1646
+ "which may significantly increase memory usage and slow down training. "
1647
+ "Consider setting `model_history=False` to optimize memory and accelerate the training process."
1648
+ )
1649
+
1626
1650
  if not use_ray and not use_spark and n_concurrent_trials > 1:
1627
1651
  if ray_available:
1628
1652
  logger.warning(
@@ -1708,7 +1732,7 @@ class AutoML(BaseEstimator):
1708
1732
  if not (mlflow.active_run() is not None or is_autolog_enabled()):
1709
1733
  self.mlflow_integration.only_history = True
1710
1734
  except KeyError:
1711
- print("Not in Fabric, Skipped")
1735
+ logger.info("Not in Fabric, Skipped")
1712
1736
  task.validate_data(
1713
1737
  self,
1714
1738
  self._state,
@@ -2529,6 +2553,21 @@ class AutoML(BaseEstimator):
2529
2553
  self._selected = state = self._search_states[estimator]
2530
2554
  state.best_config_sample_size = self._state.data_size[0]
2531
2555
  state.best_config = state.init_config[0] if state.init_config else {}
2556
+ self._track_iter = 0
2557
+ self._config_history[self._track_iter] = (estimator, state.best_config, self._state.time_from_start)
2558
+ self._best_iteration = self._track_iter
2559
+ state.val_loss = getattr(state, "val_loss", float("inf"))
2560
+ state.best_loss = getattr(state, "best_loss", float("inf"))
2561
+ state.config = getattr(state, "config", state.best_config.copy())
2562
+ state.metric_for_logging = getattr(state, "metric_for_logging", None)
2563
+ state.sample_size = getattr(state, "sample_size", self._state.data_size[0])
2564
+ state.learner_class = getattr(state, "learner_class", self._state.learner_classes.get(estimator))
2565
+ if hasattr(self, "mlflow_integration") and self.mlflow_integration:
2566
+ self.mlflow_integration.record_state(
2567
+ automl=self,
2568
+ search_state=state,
2569
+ estimator=estimator,
2570
+ )
2532
2571
  elif self._use_ray is False and self._use_spark is False:
2533
2572
  self._search_sequential()
2534
2573
  else:
@@ -2700,16 +2739,47 @@ class AutoML(BaseEstimator):
2700
2739
  ):
2701
2740
  if mlflow.active_run() is None:
2702
2741
  mlflow.start_run(run_id=self.mlflow_integration.parent_run_id)
2703
- self.mlflow_integration.log_model(
2704
- self._trained_estimator.model,
2705
- self.best_estimator,
2706
- signature=self.estimator_signature,
2707
- )
2708
- self.mlflow_integration.pickle_and_log_automl_artifacts(
2709
- self, self.model, self.best_estimator, signature=self.pipeline_signature
2710
- )
2742
+ if self.best_estimator.endswith("_spark"):
2743
+ self.mlflow_integration.log_model(
2744
+ self._trained_estimator.model,
2745
+ self.best_estimator,
2746
+ signature=self.estimator_signature,
2747
+ run_id=self.mlflow_integration.parent_run_id,
2748
+ )
2749
+ else:
2750
+ self.mlflow_integration.pickle_and_log_automl_artifacts(
2751
+ self,
2752
+ self.model,
2753
+ self.best_estimator,
2754
+ signature=self.pipeline_signature,
2755
+ run_id=self.mlflow_integration.parent_run_id,
2756
+ )
2711
2757
  else:
2712
- logger.info("not retraining because the time budget is too small.")
2758
+ logger.warning("not retraining because the time budget is too small.")
2759
+ self.wait_futures()
2760
+
2761
+ def wait_futures(self):
2762
+ if self.mlflow_integration is not None:
2763
+ logger.debug("Collecting results from submitted record_state tasks")
2764
+ t1 = time.perf_counter()
2765
+ for future in as_completed(self.mlflow_integration.futures):
2766
+ _task = self.mlflow_integration.futures[future]
2767
+ try:
2768
+ result = future.result()
2769
+ logger.debug(f"Result for record_state task {_task}: {result}")
2770
+ except Exception as e:
2771
+ logger.warning(f"Exception for record_state task {_task}: {e}")
2772
+ for future in as_completed(self.mlflow_integration.futures_log_model):
2773
+ _task = self.mlflow_integration.futures_log_model[future]
2774
+ try:
2775
+ result = future.result()
2776
+ logger.debug(f"Result for log_model task {_task}: {result}")
2777
+ except Exception as e:
2778
+ logger.warning(f"Exception for log_model task {_task}: {e}")
2779
+ t2 = time.perf_counter()
2780
+ logger.debug(f"Collecting results from tasks submitted to executors costs {t2-t1} seconds.")
2781
+ else:
2782
+ logger.debug("No futures to wait for.")
2713
2783
 
2714
2784
  def __del__(self):
2715
2785
  if (
@@ -1,7 +1,7 @@
1
1
  try:
2
2
  from sklearn.ensemble import HistGradientBoostingClassifier, HistGradientBoostingRegressor
3
- except ImportError:
4
- pass
3
+ except ImportError as e:
4
+ print(f"scikit-learn is required for HistGradientBoostingEstimator. Please install it; error: {e}")
5
5
 
6
6
  from flaml import tune
7
7
  from flaml.automl.model import SKLearnEstimator