dirac-institute / kbmod-wf

MIT License
0 stars 0 forks source link

Investigate the use of "Channels" in parsl to allow execution from a laptop on Klone #19

Open drewoldag opened 1 month ago

drewoldag commented 1 month ago

Feature request Investigation this: https://parsl.readthedocs.io/en/stable/stubs/parsl.channels.base.Channel.html#parsl.channels.base.Channel

This may be the methodology to use in order to allow the hypervisor to run from a local computer while the resources are requested from Klone (or equivalent)

drewoldag commented 1 month ago

Initial testing doesn't make it look like it "just works":

I set up the Klone configuration to look roughly like this:

def klone_resource_config():
    return Config(
        ...
        executors=[
            HighThroughputExecutor(
                label="small_cpu",
                provider=SlurmProvider(
                    partition="compute-bigmem",
                    account="astro",
                    min_blocks=0,
                    max_blocks=4,
                    init_blocks=1,
                    parallelism=1,
                    nodes_per_block=1,
                    cores_per_node=1,  # perhaps should be 8???
                    mem_per_node=64,  # In GB
                    channel=SSHInteractiveLoginChannel(
                        hostname="klone.hyak.uw.edu",
                        username="awoldag",
                    )
                ),
            ),

Then trying to load that config in python:

(parsl) drew@allosaurus:~/code/kbmod-wf$ python
Python 3.12.4 | packaged by conda-forge | (main, Jun 17 2024, 10:23:07) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import kbmod_wf
>>> kbmod_wf.resource_configs.klone_configuration.klone_resource_config()
Enter klone.hyak.uw.edu Logon password :
Traceback (most recent call last):
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/paramiko/transport.py", line 1622, in auth_password
    return self.auth_interactive(username, handler)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/paramiko/transport.py", line 1727, in auth_interactive
    return self.auth_handler.wait_for_response(my_event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/paramiko/auth_handler.py", line 263, in wait_for_response
    raise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/drew/code/kbmod-wf/src/kbmod_wf/resource_configs/klone_configuration.py", line 41, in klone_resource_config
    channel=SSHInteractiveLoginChannel(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/parsl/channels/ssh_il/ssh_il.py", line 73, in __init__
    transport.auth_password(username, il_password)
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/paramiko/transport.py", line 1625, in auth_password
    raise e
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/paramiko/transport.py", line 1603, in auth_password
    return self.auth_handler.wait_for_response(my_event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/drew/miniconda3/envs/parsl/lib/python3.12/site-packages/paramiko/auth_handler.py", line 263, in wait_for_response
    raise e
paramiko.ssh_exception.BadAuthenticationType: Bad authentication type; allowed types: ['gssapi-keyex', 'gssapi-with-mic', 'keyboard-interactive']