Releases: Netflix/metaflow
2.2.2 (Aug 20th, 2020)
Metaflow 2.2.2 Release Notes
The Metaflow 2.2.2 release is a minor patch release.
- Bug Fixes
- Fix a regression introduced in 2.2.1 related to Conda environments
- Clarify Pandas requirements for Tutorial Episode 04
- Fix an issue with the metadata service
Bug Fixes
Fix a regression with Conda
Metaflow 2.2.1 included a commit which was merged too early and broke the use of Conda. This release reverses this patch.
Clarify Pandas version needed for Episode 04
Recent versions of Pandas are not backward compatible with the one used in the tutorial; a small comment was added to warn of this fact.
Fix an issue with the metadata service
In some cases, the metadata service would not properly create runs or tasks.
2.2.1 (Aug 17th, 2020)
Metaflow 2.2.1 Release Notes
The Metaflow 2.2.1 release is a minor patch release.
- Features
- Add
include
parameter tomerge_artifacts
.
- Add
- Bug Fixes
- Fix a regression introduced in 2.1 related to S3 datatools
- Fix an issue where Conda execution would fail if the Conda environment was not writeable
- Fix the behavior of uploading artifacts to the S3 datastore in case of retries
Features
Add include
parameter for merge_artifacts
You can now specify the artifacts to be merged explicitly by the merge_artifacts
method as opposed to just specifying the ones that should not be merged.
Bug Fixes
Fix a regression with datatools
Fixes the regression described in #285.
Fix an issue with Conda in certain environments
In some cases, Conda is installed system wide and the user cannot write to its installation directory. This was causing issues when trying to use the Conda environment. Fixes #179.
Fix an issue with the S3 datastore in case of retries
Retries were not properly handled when uploading artifacts to the S3 datastore. This fix addresses this issue.
2.2.0 (Aug 4th, 2020)
Metaflow 2.2.0 Release Notes
The Metaflow 2.2.0 release is a minor release and introduces Metaflow's support for R lang.
- Features
- Support for R lang.
Features
Support for R lang.
This release provides an idiomatic API to access Metaflow in R lang. It piggybacks on the Pythonic implementation as the backend providing most of the functionality previously accessible to the Python community. With this release, R users can structure their code as a metaflow flow. Metaflow will snapshot the code, data, and dependencies automatically in a content-addressed datastore allowing for resuming of workflows, reproducing past results, and inspecting anything about the workflow e.g. in a notebook or RStudio IDE. Additionally, without any changes to their workflows, users can now execute code on AWS Batch and interact with Amazon S3 seamlessly.
2.1.1 (Jul 30th, 2020)
Metaflow 2.1.1 Release Notes
The Metaflow 2.1.1 release is a minor patch release.
- Bug Fixes
- Handle race condition for
/step
endpoint of metadata service.
- Handle race condition for
Bug Fixes
Handle race condition for /step
endpoint of metadata service.
The foreach
step in AWS Step Functions launches multiple AWS Batch tasks, each of which tries to register the step metadata, if it already doesn't exist. This can result in a race condition and cause the task to fail. This patch properly handles the 409 response from the service.
2.1.0 (Jul 29th, 2020)
Metaflow 2.1.0 Release Notes
The Metaflow 2.1.0 release is a minor release and introduces Metaflow's integration with AWS Step Functions.
- Features
- Add capability to schedule Metaflow flows with AWS Step Functions.
- Improvements
- Fix log indenting in Metaflow.
- Throw exception properly if fetching code package from Amazon S3 on AWS Batch fails.
- Remove millisecond information from timestamps returned by Metaflow client.
- Handle CloudWatchLogs resource creation delay gracefully.
Features
Add capability to schedule Metaflow flows with AWS Step Functions.
Netflix uses an internal DAG scheduler to orchestrate most machine learning and ETL pipelines in production. Metaflow users at Netflix can seamlessly deploy and schedule their flows to this scheduler. Now, with this release, we are introducing a similar integration with AWS Step Functions where Metaflow users can easily deploy & schedule their flows by simply executing
python myflow.py step-functions create
which will create an AWS Step Functions state machine for them. With this feature, Metaflow users can now enjoy all the features of Metaflow along with a highly available, scalable, maintenance-free production scheduler without any changes in their existing code.
We are also introducing a new decorator - @schedule
, which allows Metaflow users to instrument time-based triggers via Amazon EventBridge for their flows deployed on AWS Step Functions.
With this integration, Metaflow users can inspect their flows deployed on AWS Step Functions as before and debug and reproduce results from AWS Step Functions on their local laptop or within a notebook.
Documentation
Launch Blog Post
Improvements
Fix log indenting in Metaflow.
Metaflow was inadvertently removing leading whitespace from user-visible logs on the console. Now Metaflow presents user-visible logs with the correct formatting.
Throw exception properly if fetching code package from Amazon S3 on AWS Batch fails.
Due to malformed permissions, AWS Batch might not be able to fetch the code package from Amazon S3 for user code execution. In such scenarios, it wasn't apparent to the user, where the code package was being pulled from, making triaging any permission issue a bit difficult. Now, the Amazon S3 file location is part of the exception stack trace.
Remove millisecond information from timestamps returned by Metaflow client.
Metaflow uses time
to store the created_at
and finished_at
information for the Run
object returned by Metaflow client. time
unfortunately does not support the %f
directive, making it difficult to parse these fields by datetime
or time
. Since Metaflow doesn't expose timings at millisecond grain, this PR drops the %f
directive.
Handle CloudWatchLogs resource creation delay gracefully.
When launching jobs on AWS Batch, the CloudWatchLogStream might not be immediately created (and may never be created if say we fail to pull the docker image for any reason whatsoever). Metaflow will now simply retry again next time.
PR #209.
2.0.5 (Apr 30th, 2020)
Metaflow 2.0.5 Release Notes
- Improvements
- Fix logging of prefixes in
datatools.S3._read_many_files
. - Increase retry count for AWS Batch logs streaming.
- Upper-bound
pylint
version to< 2.5.0
for compatibility issues.
- Fix logging of prefixes in
The Metaflow 2.0.5 release is a minor patch release.
Improvements
Fix logging of prefixes in datatools.S3._read_many_files
Avoid a cryptic error message when datatools.S3._read_many_files
is unsuccessful by converting prefixes
from a generator to a list.
Increase retry count for AWS Batch logs streaming.
Modify the retry behavior for log fetching on AWS Batch by adding jitters to exponential backoffs as well as reset the retry counter for every successful request.
Additionally, fail the metaflow task when we fail to stream the task logs back to the user's terminal even if AWS Batch task succeeds.
Upper-bound pylint version to < 2.5.0.
pylint
version 2.5.0
would mark Metaflow's self.next()
syntax as an error. As a result, python helloworld.py run
would fail at the pylint check step unless we run with --no-pylint
. This version upper-bound is supposed to automatically downgrade pylint
during metaflow
installation if pylint==2.5.0
has been installed.
2.0.4 (Apr 28th, 2020)
Metaflow 2.0.4 Release Notes
- Improvements
- Expose
retry_count
inCurrent
- Mute superfluous
ThrottleExceptions
in AWS Batch job logs
- Expose
- Bug Fixes
- Set proper thresholds for retrying
DescribeJobs
API for AWS Batch - Explicitly override
PYTHONNOUSERSITE
forconda
environments - Preempt AWS Batch job log collection when the job fails to get into a
RUNNING
state
- Set proper thresholds for retrying
The Metaflow 2.0.4 release is a minor patch release.
Improvements
Expose retry_count
in Current
You can now use the current
singleton to access the retry_count
of your task. The first attempt of the task will have retry_count
as 0 and subsequent retries will increment the retry_count
. As an example:
@retry
@step
def my_step(self):
from metaflow import current
print("retry_count: %s" % current.retry_count)
self.next(self.a)
Mute superfluous ThrottleExceptions
in AWS Batch job logs
The AWS Logs API for get_log_events
has a global hard limit on 10 requests per sec. While we have retry logic in place to respect this limit, some of the ThrottleExceptions
usually end up in the job logs causing confusion to the end-user. This release addresses this issue (also documented in #184).
Bug Fixes
Set proper thresholds for retrying DescribeJobs
API for AWS Batch
The AWS Batch API for describe_jobs
throws ThrottleExceptions
when managing a flow with a very wide for-each
step. This release adds retry behavior with backoffs to add proper resiliency (addresses #138).
Explicitly override PYTHONNOUSERSITE
for conda
environments
In certain user environments, to properly isolate conda
environments, we have to explicitly override PYTHONNOUSERSITE
rather than simply relying on python -s
(addresses #178).
Preempt AWS Batch job log collection when the job fails to get into a RUNNING
state
Fixes a bug where if the AWS Batch job crashes before entering the RUNNING
state (often due to incorrect IAM perms), the previous log collection behavior would fail to print the correct error message making it harder to debug the issue (addresses #185).
2.0.3 (Mar 6th, 2020)
Metaflow 2.0.3 Release Notes
- Improvements
- Parameter listing
- Ability to specify S3 endpoint
- Usability improvements
- Performance
- Conda
- Bug Fixes
- Executing on AWS Batch
The Metaflow 2.0.3 release is a minor patch release.
Improvements
Parameter listing
You can now use the current
singleton (documented here) to access the names of the parameters passed into your flow. As an example:
for var in current.parameter_names:
print("Parameter %s has value %s" % (var, getattr(self, var))
This addresses #137.
Usability improvements
A few issues were addressed to improve the usability of Metaflow. In particular, show
now properly respects indentation making the description of steps and flows more readable. This addresses #92. Superfluous print messages were also suppressed when executing on AWS batch with the local metadata provider (#152).
Performance
Conda
A smaller, newer and standalone Conda installer is now used resulting in faster and more reliable Conda bootstrapping (#123).
Bug Fixes
Executing on AWS Batch
We now check for the command line --datastore-root
prior to using the environment variable METAFLOW_DATASTORE_SYSROOT_S3
when determining the S3 root (#134). This release also fixes an issue where using the local Metadata provider with AWS batch resulted in incorrect directory structure in the .metaflow
directory (#141).
2.0.2 (Feb 11th, 2020)
2.0.1 (Dec 16th, 2019)
Enhancements
- Introduce
metaflow configure [import|export]
for importing/exporting Metaflow configurations. - Revamp
metaflow configure aws
command to address usability concerns. - Handle keyboard interrupts for Batch jobs more gracefully for large fan-outs.
Bug Fixes
- Fix a docker registry parsing bug in AWS Batch.
- Fix various typos in Metaflow tutorials.