imhamburger 님의 블로그

데이터엔지니어 부트캠프 - Tensorflow 버전 호환 문제 해결하기 + 딥러닝 관련 패키지 호환문제 해결하기 (12주차) 본문

데이터엔지니어 부트캠프

데이터엔지니어 부트캠프 - Tensorflow 버전 호환 문제 해결하기 + 딥러닝 관련 패키지 호환문제 해결하기 (12주차)

imhamburger 2024. 9. 28. 01:26

사건의 발단은... 딥러닝 구현을 위해 Tensorflow를 설치하였는데... 에러가 났다.

나는 pdm 가상환경에서 설치를 하였는데, 어떤 환경이든 상관은 없는 것 같고 조금 연식이 있는 컴퓨터를 사용하고 있다면 에러가 날 수도 있다. (근데 나는 20년도에 샀눈디... 어쨋든...) 

 

  • 에러메세지 1: No candidate is found for `tensorflow` that matches the environment or hashes
  • 에러메세지 2: ValueError: Unable to create tensor, you should probably activate padding with 'padding=True' to have batched tensors with the same length.
  • 에러메세지 3: ERROR: Failed building wheel for torch
  • 에러메세지 4: module 'tensorflow.compat.v2.__internal__' has no attribute '어쩌고저쩌고_function'
  • 에러메세지 5: '너는 지금 keras 버전 3을 사용하고있는데 tf-keras 최신버전은 이를 지원하지 않아.'

 

pdm add로 설치를 할 때 다음과 같은 단계에서...

 

이런 에러가 날 것이다.

 

 

에러메세지 1

No candidate is found for `tensorflow` that matches the environment or hashes

 

모든 시행착오를 겪은 끝에.....

(파이썬 가상환경 버전도 다 바꿔보고, 캐시도 지우고 재설치하고, pyproject.toml 파일에서 이것저것 수정도 해보고...등...)

 

마지막으로 시도한 tensorflow 버전을 낮춰 설치하니 해결되었다.

이 같은 에러가 있다면... tensorflow 버전을 최신버전이 아닌 조금 낮춰야 한다. (나 같은 경우엔 2.16.2 버전으로 하니 해결되었다.)

 

해결방법

pdm add tensorflow==2.16.2

 

 

근데 여기서 또 문제는....

 

어떤 패키지를 설치할 때 그 패키지 안에 tensorflow가 포함되어 있다면 항상 에러가 날 것이다. 

 

예를들어, 나 같은 경우에는 transformers 패키지를 설치하니 또 문제가 터졌다.

 

 

에러메세지 2

ValueError: Unable to create tensor, you should probably activate padding with 'padding=True' to have batched tensors with the same length.

 

해당 에러는 transformers 패키지 안에 최신 버전의 tensorflow가 있어서 호환이 되지 않을 때 발생하는 에러이다.

따라서, pdm 가상환경을 사용하고 있다면 아래 코드로 tensorflow 에서 호환되는 버전을 명시하여 설치하면 된다.

 

해결방법

pdm add tensorflow==2.16.2

 

 

그리고 위와 같은 에러를 겪었다면,  torchtorchvision 이라는 패키지를 설치할 때에도 에러가 날 것이다.

 

 

에러메세지 3

ERROR: Failed building wheel for torch

 

해결방법은 위와 같다. torch도 낮은 버전으로 설치해줘야 한다. + torchvision도...

버전은 여러개가 있을텐데... 나는 아래 버전으로 설치하니 해결할 수 있었다.

 

해결방법

pdm add torch==2.2.2
pdm add torchvision==0.17.2

 

 

에러메세지 4

module 'tensorflow.compat.v2.__internal__' has no attribute '어쩌고저쩌고_function'

 

나는 hotdog-not-hotdog 딥러닝 모델을 사용하여 기능을 구현한 것이 있었는데 이런 에러가 났다.

 

해당 메세지는 keras 호환 버전의 문제이다...

사실 위 메세지만 보았을 땐 뭐가 문제인지도 몰랐는데, 삽질의 결과는 keras 버전 호환이 안되서였다. 위에서 계속 버전을 낮춰 설치하였는데 안에 keras 버전들이 충돌이 일어난 것 같다.

 

해결방법

pdm add keras==3.0.0

 

 

에러메세지 5

'너는 지금 keras 버전 3을 사용하고있는데 tf-keras 최신버전은 이를 지원하지 않아.'

 

tf-keras 버전이 위에 패키지들과 안맞는 문제로 이것도 버전을 낮춰 설치하면 된다.

(너무 낮추면 안맞을 수 있으니 호환버전을 잘 찾아야 한다...)

 

해결방법

pdm add tf-keras==2.16.0

 

 

이렇게 다 버전을 맞춰주니 잘 실행되었다....가? 또 같은 에러가 났다.

 

근데 갑자기 잘 실행되다가 에러가 난다면, 모든 파일을 다 삭제하고 다시 깃허브에서 클론해서 받아 쓰는 방법도 나쁘지 않다.

뭔가 실행되면서 꼬였을 수도 있고... 나도 이 방법으로 해결하였다.

 

 

나처럼 삽질하는 사람이 없길 바라며............!

 

 

 

일주일을 보내면서.....

이번 주는 정말 다양한 일들이 있었지만, 어느 날은 에러 해결에 거의 하루를 쏟아부었다. 처음엔 이 상황이 너무 답답해서 '왜 나에게만 이런 시련이 오는 건가...'라는 생각이 들었지만, 결국에는 긍정적인 마인드로 버텨냈다. 에러를 많이 만나면 그만큼 실력도 쌓이지 않을까 하는 위안으로 마음을 다잡았다. 인터넷에서 찾아본 해결 방법들이 잘 먹히지 않을 때도 있어서 막막했지만, 그 과정에서 더 많은 것을 배울 수 있었다. 단순히 코드를 고치는 것이 아니라 문제를 분석하고, 다양한 접근 방법을 시도해보는 것 자체가 큰 공부가 되었다.

이런 경험들이 쌓이면서 나중에는 빠르게 문제를 해결하는 데 큰 도움이 될 거라고 믿는다.

이번에 겪은 에러들은 기존에 인터넷에 나와 있는 해결책이 잘 통하지 않았던 것도 있어서 스스로 다른 방법을 찾아가며 해결하는 과정이 어려우면서도 나에게 새로운 인사이트를 주었다. 실력 향상에 중요한 경험이었던 것 같다. 막상 해내고 나니 뿌듯함이 더 커진 느낌이다!!

 


앞으로 나의 방향

이번 경험을 통해 여러 에러를 직면했을 때 처음엔 막막하지만, 결국 해결하고 나면 '나도 해낼 수 있다'는 자신감이 생긴다는 것을 깨달았다. 그동안 데이터 엔지니어 공부를 하면서 막연한 두려움도 있었지만, 이런 마음가짐을 유지하며 계속 도전해야겠다. 특히 올해가 끝나기 전에 중요한 파이널 프로젝트가 남아 있으니, 그걸 목표로 차근차근 나아가야 할 것 같다.

시간이 참 빠르게 흘러간다. 벌써 9월이 지나가고 이제 올해도 몇 달 남지 않았다. 매일 바쁘게 지내다 보니 시간이 더 빨리 가는 것 같다. 하지만 그런 만큼 지금까지 쌓아온 것들이 앞으로의 나에게 큰 자산이 될 것이라는 생각도 든다. 앞으로도 작은 성취들을 하나씩 이뤄가면서, 데이터 엔지니어링 공부뿐만 아니라 내가 목표로 하는 모든 것을 이뤄낼 수 있기를 바란다. 올해 남은 시간 동안 힘내서 파이널 프로젝트까지 성공적으로 마무리할 수 있도록 최선을 다하자.