-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Run test_sqlalchemy_store.py
against PostgreSQL, MySQL, and MSSQL
#5540
Conversation
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
.github/workflows/master.yml
Outdated
@@ -168,11 +168,12 @@ jobs: | |||
./tests/db/compose.sh build --build-arg DEPENDENCIES="$(python setup.py -q dependencies)" | |||
- name: Database tests - run | |||
run: | | |||
set +e |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Temporary change to check which tests fail.
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
(order_value.is_(None), 1), | ||
(order_value.is_(None), 2), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's say we have code like this:
with mlflow.start_run():
log_metric("m", 1)
with mlflow.start_run():
log_metric("m", np.nan)
with mlflow.start_run():
pass
mlflow.search_runs(["0"], order_by=["metrics.m"])
This code creates a table like below, then sorts rows using the metrics.m
and clause_1
columns.
run_id | metrics.m | is_nan | clause_0 |
---|---|---|---|
1 | 1 | False | 0 |
2 | 0 | True | 1 |
3 | NULL | False | 1 |
SELECT ... ORDER BY clause_1, metrics.m
In PostgreSQL, the result looks like this because NULLs are sorted AFTER non-null values:
run_id | metrics.m | is_nan | clause_1 |
---|---|---|---|
1 | 1 | False | 0 |
2 | 0 | True | 1 |
3 | NULL | False | 1 |
In other databases (SQLite, MySQL, SQL server), the result looks like this because NULLs are sorted BEFORE non-null values:
run_id | metrics.m | is_nan | clause_1 |
---|---|---|---|
1 | 1 | False | 0 |
3 | NULL | False | 1 |
2 | 0 | True | 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the new code, we sort a table like this:
run_id | metrics.m | is_nan | clause_1 |
---|---|---|---|
1 | 1 | False | 0 |
2 | 0 | True | 1 |
3 | NULL | False | 2 |
which produces the same result in all databases
mlflow/utils/search_utils.py
Outdated
if dialect == "mysql": | ||
like_op = column.op("LIKE BINARY") | ||
elif dialect == "mssql": | ||
like_op = sa.collate(column, "SQL_Latin1_General_CP1_CS_AS").like |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LIKE
operator is case-insensitive in MySQL and SQL server.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This block enables case_sensitive_like
for SQLite:
mlflow/mlflow/store/db/utils.py
Lines 76 to 78 in d9489d0
if db_type == SQLITE: | |
session.execute("PRAGMA foreign_keys = ON;") | |
session.execute("PRAGMA case_sensitive_like = true;") |
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
mlflow/utils/search_utils.py
Outdated
if dialect == "mysql": | ||
like_op = column.op("LIKE BINARY") | ||
elif dialect == "mssql": | ||
like_op = column.collate("SQL_Latin1_General_CP1_CS_AS").like |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to include Kana sensitive as well?
"SQL_Latin1_General_CP1_CS_AS_KS" or does sorting based on characters make the ordering confusing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we do :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SQL_Latin1_General_CP1_CS_AS_KS
didn't work:
https://github.com/mlflow/mlflow/runs/5728726867?check_suite_focus=true#step:11:10259
E mlflow.exceptions.MlflowException: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid collation 'SQL_Latin1_General_CP1_CS_AS_KS'. (448) (SQLExecDirectW)")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is _KS
only available for Japanese collations such as Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think kana insensitivity is a big issue though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Offline discussion: we should also support kana sensitivity if there are no downsides.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm wondering if the _UTF8
addition as suffix is required. It's pretty hard to tell from their docs... https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver15#Collation_Defn
I wonder if people using MSSQL as a tracking backend end up writing a T-SQL script when they setup MLflow to enable faster filtering and apply specific column collations to speed it up?
I agree, not that big of a deal to enable this (it would just be nice to enable functionality for as many users as possible, but if the config is broken, then it's broken...)
f16ca01
to
e640833
Compare
mlflow/utils/search_utils.py
Outdated
sql_filter_ops = {"LIKE": column.like, "ILIKE": column.ilike} | ||
def get_sql_filter_ops(cls, column, operator, dialect): | ||
if dialect == MYSQL: | ||
like_op = column.op("LIKE BINARY") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Offline discussion: insert a non-binary LIKE
to improve the performance.
LIKE :pattern AND LIKE BINARY :pattern
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Code to check kana sensitivity in SQL server: import mlflow
import uuid
name = uuid.uuid4().hex
experiment_id = mlflow.create_experiment(name)
mlflow.set_experiment(name)
for val in ["りんご", "リンゴ"]:
with mlflow.start_run():
mlflow.log_param("p", val)
print(mlflow.search_runs([experiment_id], filter_string="parameters.p LIKE 'リンゴ'")) |
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
) | ||
|
||
elif dialect == MSSQL: | ||
like_op = column.collate("Japanese_Bushu_Kakusu_100_CS_AS_KS_WS").like |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
like_op = column.collate("Japanese_Bushu_Kakusu_100_CS_AS_KS_WS").like | |
like_op = column.collate("Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8").like |
I tried Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
on local but got an invalid collation error.
@@ -1518,6 +1567,10 @@ def test_search_with_max_results(self): | |||
|
|||
assert runs[:1000] == self._search(exp) | |||
for n in [0, 1, 2, 4, 8, 10, 20, 50, 100, 500, 1000, 1200, 2000]: | |||
if n == 0 and self.store._get_dialect() == MSSQL: | |||
# In SQL server, `max_results = 0` results in the following error: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
curiosity question: does this behavior create a UI bug with an MSSQL backend if someone searches an invalid condition?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@BenWilson2
It doesn't because MLflow UI doesn't allow users to set the number of runs to fetch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great stuff, Haru! Improving usability for users utilizing different backend stores and helping to notify us if any changes will create issues for them is wonderful.
LGTM!
…lflow#5540) * run test_sqlalchemy_store Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use IS NULL Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename test classes Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * fix like operation Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use method Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use constants Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use LIKE before LIKE BINARY Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use Japanese_Bushu_Kakusu Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove _UTF8 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * reset experiment_id Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com>
…lflow#5540) * run test_sqlalchemy_store Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use IS NULL Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename test classes Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * fix like operation Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use method Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use constants Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use LIKE before LIKE BINARY Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use Japanese_Bushu_Kakusu Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove _UTF8 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * reset experiment_id Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com>
…lflow#5540) * run test_sqlalchemy_store Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use IS NULL Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename test classes Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * fix like operation Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use method Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use constants Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use LIKE before LIKE BINARY Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use Japanese_Bushu_Kakusu Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove _UTF8 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * reset experiment_id Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com>
…lflow#5540) * run test_sqlalchemy_store Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use IS NULL Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename test classes Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * fix like operation Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use method Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use constants Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use LIKE before LIKE BINARY Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use Japanese_Bushu_Kakusu Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove _UTF8 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * reset experiment_id Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com>
…lflow#5540) * run test_sqlalchemy_store Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use IS NULL Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename test classes Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * fix like operation Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use method Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use constants Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use LIKE before LIKE BINARY Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use Japanese_Bushu_Kakusu Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove _UTF8 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * reset experiment_id Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
* Refactor files in `tests/db` to allow running tests in repository root (#5513) * rename postgres.schema Signed-off-by: harupy <hkawamura0130@gmail.com> * Refactor database tests Signed-off-by: harupy <hkawamura0130@gmail.com> * remove import sqlalchemy Signed-off-by: harupy <hkawamura0130@gmail.com> * fix docker-compose down Signed-off-by: harupy <hkawamura0130@gmail.com> * update Signed-off-by: harupy <hkawamura0130@gmail.com> * fix lint failures Signed-off-by: harupy <hkawamura0130@gmail.com> * blacken Signed-off-by: harupy <hkawamura0130@gmail.com> * more fixes Signed-off-by: harupy <hkawamura0130@gmail.com> * add tests/db/compose.sh Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use compose v2 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove grep Signed-off-by: harupy <hkawamura0130@gmail.com> * run command using exec Signed-off-by: harupy <hkawamura0130@gmail.com> * set --no-TTY Signed-off-by: harupy <hkawamura0130@gmail.com> * specify image and remove redundant build arg Signed-off-by: harupy <hkawamura0130@gmail.com> * fix workflow Signed-off-by: harupy <hkawamura0130@gmail.com> * improve README Signed-off-by: harupy <hkawamura0130@gmail.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Append user agent added by request_header_provider to default user agent (#5502) * User agent added by request_header_plugin gets appended to default user agent Signed-off-by: singankit <anksing@microsoft.com> * Adding large marker following similar test with the marker Signed-off-by: singankit <anksing@microsoft.com> * Appending headers from various request_header_providers Signed-off-by: singankit <anksing@microsoft.com> * Review comments to use dict method Signed-off-by: singankit <anksing@microsoft.com> * Adding default request header provider Signed-off-by: singankit <anksing@microsoft.com> * Fixing typo in test Signed-off-by: singankit <anksing@microsoft.com> * Fixing rest_utils test Signed-off-by: singankit <anksing@microsoft.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * use schema when parsing csv Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Use split (#5522) Signed-off-by: dbczumar <corey.zumar@databricks.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Fix issue #2804 - Set run name in MLProject execution (#5187) * Add mlflow run name to projects.run() Signed-off-by: bramrodenburg <14278376+bramrodenburg@users.noreply.github.com> * Renamed MLFLOW_RUN_NAME to RUN_NAME in CLI metavars Signed-off-by: bramrodenburg <14278376+bramrodenburg@users.noreply.github.com> * Update CLI docstring * Address feedback * Autoformat: https://github.com/mlflow/mlflow/actions/runs/2031948113 Signed-off-by: mlflow-automation <mlflow-automation@users.noreply.github.com> Co-authored-by: Corey Zumar <39497902+dbczumar@users.noreply.github.com> Co-authored-by: mlflow-automation <mlflow-automation@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Restoring virtual python environment for mlflow pyfunc spark_udf (#5487) * init Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * debug ci Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * black Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * fix tests Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * fix test Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Set timezone to UTC in windows (#5538) * Diable Daylight Saving time adjustments in windows Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use utc Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * init (#5532) Signed-off-by: Weichen Xu <weichen.xu@databricks.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * feat: pyspark autologging enhancement (#5481) * feat: general support for autologging models containing parameters of type Param and fix some comments Signed-off-by: Xinyue Ruan <serena.rxy@gmail.com> * fix format Signed-off-by: Xinyue Ruan <serena.rxy@gmail.com> * fix jinja2 import error Signed-off-by: Xinyue Ruan <serena.rxy@gmail.com> * update function doc Signed-off-by: Xinyue Ruan <serena.rxy@gmail.com> * add Evaluator type param into testcase Signed-off-by: Xinyue Ruan <serena.rxy@gmail.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Fix invalid Anaconda URLs (#5547) Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Use latest version of black fo fix lint check (#5548) * Use latest version of black Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * run black Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * test for csv parsing Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Removing the mention of tf1. (#5552) Removing the mention of tf1 since this directory mentions the examples of using tf2. For users on TF1, use the migration guide: https://www.tensorflow.org/guide/migrate Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Run `test_sqlalchemy_store.py` against PostgreSQL, MySQL, and MSSQL (#5540) * run test_sqlalchemy_store Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use IS NULL Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * rename test classes Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * fix like operation Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use method Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use constants Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use LIKE before LIKE BINARY Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * use Japanese_Bushu_Kakusu Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * remove _UTF8 Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * reset experiment_id Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Make tensorflow model prediction support array type input (#5545) * init Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * add test Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Removed utility function, use zip Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Implement function to get MLflow pyfunc model dependencies (#5503) * init Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * init Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update doc Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * split test Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * refactor Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> * update Signed-off-by: Weichen Xu <weichen.xu@databricks.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * replace universal_newlines with text (#5557) Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Fix #5551 - PyTorch LightningDeprecationWarning ModelSummary and get_gpu_memory_map (#5559) * Fix #5551 - PyTorch LightningDeprecationWarning ModelSummary and get_gpu_memory_map Signed-off-by: Bruno Cabado Lousa <sr.brunocabado@gmail.com> * Fix version check Signed-off-by: Bruno Cabado Lousa <sr.brunocabado@gmail.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Pin `click` to fix spacy tests (#5560) * pin click Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * add spacy as extra dependency Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> * pin flask Signed-off-by: harupy <17039389+harupy@users.noreply.github.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Add default experiment ID provider for repo notebooks (#5449) Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Add feature to set and delete description of a run. (#5534) * Add feature to set and delete description of a run. Signed-off-by: Albert Chung <albertswchung@gmail.com> * Add edge case handling when run description is set twice, add tests for each scenario. Signed-off-by: Albert Chung <albertswchung@gmail.com> * Throw INVALID_PARAMETER_VALUE error code when setting description twice. Signed-off-by: Albert Chung <albertswchung@gmail.com> Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * revert change to json utils Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * revert change to json utils Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * Autoformat: https://github.com/mlflow/mlflow/actions/runs/2091247297 Signed-off-by: mlflow-automation <mlflow-automation@users.noreply.github.com> * move string io Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * remove file Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> * remove files Signed-off-by: Varun Kumar Vijay <vvijay@bolt.com> Co-authored-by: Harutaka Kawamura <hkawamura0130@gmail.com> Co-authored-by: Ankit Singhal <30610298+singankit@users.noreply.github.com> Co-authored-by: Corey Zumar <39497902+dbczumar@users.noreply.github.com> Co-authored-by: bramrodenburg <14278376+bramrodenburg@users.noreply.github.com> Co-authored-by: mlflow-automation <mlflow-automation@users.noreply.github.com> Co-authored-by: WeichenXu <weichen.xu@databricks.com> Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> Co-authored-by: Vini Jaiswal <vini.js1303@gmail.com> Co-authored-by: Bruno Cabado <Kr4is@users.noreply.github.com> Co-authored-by: apurva-koti <51172624+apurva-koti@users.noreply.github.com> Co-authored-by: Albert <albertswchung@gmail.com>
Signed-off-by: harupy 17039389+harupy@users.noreply.github.com
What changes are proposed in this pull request?
Run
test_sqlalchemy_store.py
against PostgreSQL, MySQL, and MSSQL to ensure MLflow tracking operations work in different databases and prevent issues / regressions.How is this patch tested?
Fixed tests
Does this PR change the documentation?
ci/circleci: build_doc
check. If it's successful, proceed to thenext step, otherwise fix it.
Details
on the right to open the job page of CircleCI.Artifacts
tab.docs/build/html/index.html
.Release Notes
Is this a user-facing change?
(Details in 1-2 sentences. You can just refer to another PR with a description if this PR is part of a larger change.)
What component(s), interfaces, languages, and integrations does this PR affect?
Components
area/artifacts
: Artifact stores and artifact loggingarea/build
: Build and test infrastructure for MLflowarea/docs
: MLflow documentation pagesarea/examples
: Example codearea/model-registry
: Model Registry service, APIs, and the fluent client calls for Model Registryarea/models
: MLmodel format, model serialization/deserialization, flavorsarea/projects
: MLproject format, project running backendsarea/scoring
: MLflow Model server, model deployment tools, Spark UDFsarea/server-infra
: MLflow Tracking server backendarea/tracking
: Tracking Service, tracking client APIs, autologgingInterface
area/uiux
: Front-end, user experience, plotting, JavaScript, JavaScript dev serverarea/docker
: Docker use across MLflow's components, such as MLflow Projects and MLflow Modelsarea/sqlalchemy
: Use of SQLAlchemy in the Tracking Service or Model Registryarea/windows
: Windows supportLanguage
language/r
: R APIs and clientslanguage/java
: Java APIs and clientslanguage/new
: Proposals for new client languagesIntegrations
integrations/azure
: Azure and Azure ML integrationsintegrations/sagemaker
: SageMaker integrationsintegrations/databricks
: Databricks integrationsHow should the PR be classified in the release notes? Choose one:
rn/breaking-change
- The PR will be mentioned in the "Breaking Changes" sectionrn/none
- No description will be included. The PR will be mentioned only by the PR number in the "Small Bugfixes and Documentation Updates" sectionrn/feature
- A new user-facing feature worth mentioning in the release notesrn/bug-fix
- A user-facing bug fix worth mentioning in the release notesrn/documentation
- A user-facing documentation change worth mentioning in the release notes