우분투에 새로운 가상환경을 파서 환경설정을 하던 와중 실험에 사용할 wandb도 새로 설치하려 했는데, API key가 먹지 않아서 발생한 오류에 대한 해결 방법 기록!
우선 wandb 사이트에 회원가입을 이미 완료했다는 가정 하에 아래 작업을 진행하므로, 혹시 회원가입을 하지 않았다면 미리 가입해두고 사이트에 로그인 시켜놓도록 하자.
그 다음 터미널에서의 wandb 설치는 그냥 아래와 같이 pip로 간단하게 설치 가능
# 설치
pip install wandb
# 로그인
wandb login

설치 완료 후 wandb login을 입력하여 첫 로그인을 시도하면 위와 같이 본인 계정의 개인 API key를 입력하라고 한다.
참고로 wandb는 free plan을 대부분 사용하고 있을 텐데, 무료/유료와 관계 없이 모든 계정은 다 API key를 생성할 수 있음을 알아두자.
위 사진 속 출력 결과 중간에 나온 https://wandb.ai/authorize?ref=models 링크로 들어가면 아래와 같은 화면이 나오고, 중앙의 generate new API key를 클릭하여 본인의 api key를 바로 생성할 수 있다.


클릭하면 위와 같은 화면이 나오는데, wandb_v1_xxxxx 형태로 된 저 문자열이 바로 API key이므로 이를 그대로 copy해서 앞선 터미널 입력 창에 그대로 붙여넣어주면 된다.
막간을 이용한 잡지식으로, 터미널에서 붙여넣기는 shift+insert 키 조합으로 붙여넣기하면 되고, 보통의 경우 password나 api key와 같은 것들을 입력받을 때 자판을 눌러도 숨김처리되어 터미널 화면에는 전혀 표시되지 않기 때문에 의심하지 말고 그냥 그대로 shift+insert 하고 바로 엔터 누르면 된다...
이렇게해서 바로 완료되면 아무 문제 없이 wandb를 사용하면 되지만, 이 때 나와 같은 오류를 마주한 사람들은 아래까지 읽어보자.


ValueError: API key must be 40 characters long, yours was 86
나의 경우는 사이트에서 발급받은 api key 문자열을 그대로 복붙해서 입력했는데, 위와 같이 api key가 지정된 글자수를 초과한다는 이상한 오류 문구가 떴다.
아마 이 가상환경을 새로 파서 라이브러리를 이것저것 설치하고 있었을 때 너무 구 버전의 wandb를 설치한 것이 문제가 된 것 같다.

# 현재 버전 확인
python -c "import wandb; print(wandb.__version__)"
wandb --version
which wandb
# 업그레이드
python -m pip install -U wandb
# 다시 로그인
wandb login --relogin
위 작업을 통해 pip와 wandb의 버전을 확인하고 다시 업그레이드 시켜주고,

업그레이드 한 후 wandb login --relogin을 통해 다시 로그인 하여 사이트에서 복사한 api key를 입력해주면 위와 같이 이제는 잘 통과되어 로그인에 성공한 것을 볼 수 있다!


python - <<'PY'
import wandb
wandb.init(project="wandb-smoke", name="login_test", mode="online")
wandb.log({"hello": 1})
wandb.finish()
print("done")
PY
위와 같은 smoke test를 돌려봤을 때 잘 돌아가면 진짜 성공!!