princeton-ddss / blackfish

Machine learning as a service (MLaaS) for busy researchers
https://princeton-ddss.github.io/blackfish/
0 stars 0 forks source link

Handle missing profiles gracefully #23

Open cswaney opened 2 months ago

cswaney commented 2 months ago

When a command takes a --profile option and the profile provided doesn't exist, the command should should return a nice message stated that the profile doesn't exist instead of the current ugly call stack:

➜ blackfish run --profile ddss --time 00:05 --mem 64 --gres 4 text-generate --model meta-llama/Meta-Llama-3-70B --revision b4d08b7db49d488da3ac49adf25a6b9ac01ae338 --dry-run 
Traceback (most recent call last):
  File "/Users/colinswaney/GitHub/blackfish/venv/bin/blackfish", line 8, in <module>
    sys.exit(main())
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/rich_click/rich_command.py", line 126, in main
    rv = self.invoke(ctx)
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/Users/colinswaney/GitHub/blackfish/venv/lib/python3.10/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/colinswaney/GitHub/blackfish/src/app/cli/services/text_generation.py", line 89, in run_text_generate
    profile = config.BLACKFISH_PROFILES[ctx.obj.get("profile", "default")]
KeyError: 'ddss'