Skip to content
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

Artifact store permission errors running mflow_example.ipynb #4

Open
julien-flack-adnav opened this issue Oct 2, 2023 · 0 comments

Comments

@julien-flack-adnav
Copy link

All services start successfully and the MLFlow UI can be seen on http://127.0.0.1:5001/ and Jupyter notebooks on port 8888. However, when I attempt to run the included notebook mlflow_example.ipynb I get the error below. Worth noting that the metrics and parameters log ok and are visible but the artifact store is not working ... any help appreciated.

---------------------------------------------------------------------------
PermissionError                           Traceback (most recent call last)
Cell In [1], line 12
     10 for i in range(5):
     11     mlflow.log_metric("i",i,step=i)
---> 12 mlflow.log_artifact("mlflow_example.ipynb")

File /opt/conda/lib/python3.9/site-packages/mlflow/tracking/fluent.py:869, in log_artifact(local_path, artifact_path)
    846 """
    847 Log a local file or directory as an artifact of the currently active run. If no run is
    848 active, this method will create a new active run.
   (...)
    866         mlflow.log_artifact("features.txt")
    867 """
    868 run_id = _get_or_start_run().info.run_id
--> 869 MlflowClient().log_artifact(run_id, local_path, artifact_path)

File /opt/conda/lib/python3.9/site-packages/mlflow/tracking/client.py:1091, in MlflowClient.log_artifact(self, run_id, local_path, artifact_path)
   1056 def log_artifact(self, run_id, local_path, artifact_path=None) -> None:
   1057     """
   1058     Write a local file or directory to the remote ``artifact_uri``.
   1059 
   (...)
   1089         is_dir: False
   1090     """
-> 1091     self._tracking_client.log_artifact(run_id, local_path, artifact_path)

File /opt/conda/lib/python3.9/site-packages/mlflow/tracking/_tracking_service/client.py:456, in TrackingServiceClient.log_artifact(self, run_id, local_path, artifact_path)
    454     artifact_repo.log_artifacts(local_path, path_name)
    455 else:
--> 456     artifact_repo.log_artifact(local_path, artifact_path)

File /opt/conda/lib/python3.9/site-packages/mlflow/store/artifact/sftp_artifact_repo.py:90, in SFTPArtifactRepository.log_artifact(self, local_file, artifact_path)
     88 artifact_dir = posixpath.join(self.path, artifact_path) if artifact_path else self.path
     89 with self.pool.get_sfp_connection() as sftp:
---> 90     sftp.makedirs(artifact_dir)
     91     sftp.put(local_file, posixpath.join(artifact_dir, os.path.basename(local_file)))

File /opt/conda/lib/python3.9/site-packages/pysftp/__init__.py:699, in Connection.makedirs(self, remotedir, mode)
    697 head, tail = os.path.split(remotedir)
    698 if head and not self.isdir(head):
--> 699     self.makedirs(head, mode)
    701 if tail:
    702     self.mkdir(remotedir, mode=mode)

File /opt/conda/lib/python3.9/site-packages/pysftp/__init__.py:699, in Connection.makedirs(self, remotedir, mode)
    697 head, tail = os.path.split(remotedir)
    698 if head and not self.isdir(head):
--> 699     self.makedirs(head, mode)
    701 if tail:
    702     self.mkdir(remotedir, mode=mode)

File /opt/conda/lib/python3.9/site-packages/pysftp/__init__.py:702, in Connection.makedirs(self, remotedir, mode)
    699     self.makedirs(head, mode)
    701 if tail:
--> 702     self.mkdir(remotedir, mode=mode)

File /opt/conda/lib/python3.9/site-packages/pysftp/__init__.py:626, in Connection.mkdir(self, remotepath, mode)
    614 """Create a directory named remotepath with mode. On some systems,
    615 mode is ignored. Where it is used, the current umask value is first
    616 masked out.
   (...)
    623 
    624 """
    625 self._sftp_connect()
--> 626 self._sftp.mkdir(remotepath, mode=int(str(mode), 8))

File /opt/conda/lib/python3.9/site-packages/paramiko/sftp_client.py:460, in SFTPClient.mkdir(self, path, mode)
    458 attr = SFTPAttributes()
    459 attr.st_mode = mode
--> 460 self._request(CMD_MKDIR, path, attr)

File /opt/conda/lib/python3.9/site-packages/paramiko/sftp_client.py:857, in SFTPClient._request(self, t, *args)
    855 def _request(self, t, *args):
    856     num = self._async_request(type(None), t, *args)
--> 857     return self._read_response(num)

File /opt/conda/lib/python3.9/site-packages/paramiko/sftp_client.py:909, in SFTPClient._read_response(self, waitfor)
    906 if num == waitfor:
    907     # synchronous
    908     if t == CMD_STATUS:
--> 909         self._convert_status(msg)
    910     return t, msg
    912 # can not rewrite this to deal with E721, either as a None check
    913 # nor as not an instance of None or NoneType

File /opt/conda/lib/python3.9/site-packages/paramiko/sftp_client.py:940, in SFTPClient._convert_status(self, msg)
    938     raise IOError(errno.ENOENT, text)
    939 elif code == SFTP_PERMISSION_DENIED:
--> 940     raise IOError(errno.EACCES, text)
    941 else:
    942     raise IOError(text)

PermissionError: [Errno 13] Permission denied
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant