2024년 4월 14일 일요일

tensorflow gpu 사용하기에서

 tensorflow 설치시 주의해야 한다.

# Anything above 2.10 is not supported on the GPU on Windows Native
python
-m pip install "tensorflow<2.11"
# Verify the installation:
python
-c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

2024년 4월 현재 윈도우에서는

pip install "tensorflow<2.11" 로 설치해야 한다.

import os, sys
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

한다음 import tensorflow as tf 로 불러와야 한다는데.....





그런데 막상 실행해보니 
import os, sys
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

로 설정하면 처리속도가 빨라진다.








vscode로 맥에서 윈도우 노트북에 원격접속하여 파이썬개발하기

 맥에서 파이썬코드를 개발하려고 할때 어려운 점은 GPU를 사용할 수 없다는 것이다. 물론 이전 포스팅에서처럼 파이썬3.8을 이용하면되는데 오히려 속도가 더 느려진다.

이를 해결하기위하여

1. Colab등 유료 클라우드에 유로로 가입하여 GPU를 할당받아 사용하면되는데, 이게 시간에 제약을 많이 받는다. 예를 들어 어느정도 사용하다보면 추가 머신할당 결재를 요구한다는 것이다. 그리고 돌아보면 그리 속도향상이 되지 않는다.

2. 맥에 외장 eGPU를 설치하면 도움이 된다고 하는데 막상 비용이 만만찮고, 맥환경에서는 잘돌아가는지도 의문스럽다. 물론 인텔 맥에서 부트탬프로 윈도우를 설치하면 잘 지원이 된다고 한다. 그래서 이것도...

3. RX-4090 Laptop용 NVIDIA그래픽 카드가 장착된 노트북(저의 경우는 마침있음)에 맥에서 원격연결용 앱으로 접속하여 원격으로 가상환경을 설정하고 편집하고 실행하면 상당히 속도가 개선됨을 알 수 있다. 

이 노트북은Auto1111 stable-diffusion-webui 로  AI이미지생성을 위해 마련한 것이다(--listen). 

다만 아쉬운 점은 화면의 폰트가 윈도우용 폰트여서 그리 예쁘지 않고, 가독성도 떨어진다.

4. 그래서 선택한 방법으로는

    1) 위에 말한 GPU가 설치 노트북에 SSH서버를 설치하고

    2) 맥의 vscode에 ssh client를 설치한다음

    3) 원격 연결하는 것이다.

    4) 첨부한 이미지 처럼 가독성이 좋은 화면을 볼 수 있다.

5. 참고로 이 화면은 맥화면을 캡춰한 것이다.



2024년 4월 10일 수요일

LSTM 에서 model.train_on_batch(xs, ys) 와 model.reset_states()

 Python3.8 에서 돌아가는 TensorFlow 2.6 이전버전에는

# 모델을 정의합니다.
model = keras.Sequential([
keras.layers.LSTM(128, batch_input_shape=(1, 1, 45), 
        return_sequences=False, stateful=True),
keras.layers.Dense(45, activation='sigmoid')])


한다음
# 모델을 컴파일합니다.
model.compile(loss='binary_crossentropy', optimizer='adam'
    metrics=['accuracy'])


# 최대 100번 에포크까지 수행
for epoch in range(irepeat):
model.reset_states() # 중요! 매 에포크마다 1회부터 다시 훈련하므로 상태 초기화 필요
for i in range(train_idx[0], train_idx[1]):
xs = x_samples[i].reshape(1, 1, 45)
ys = y_samples[i].reshape(1, 45)
loss, acc = model.train_on_batch(xs, ys) # 배치만큼 모델에 학습시킴

와 같이 하면 가능했으나

Python3.10에서 돌아가는 TensorFlow 2.6 부터는

Unrecognized keyword arguments passed to LSTM
    {'batch_input_shape': (1, 1, 45)}

라고 에러를 쏱아낸다.
batch_input_shape 를 input_shape 로 고쳐도 안된다.

# 최근 TensorFlow 버전에서 Sequential 객체에는 reset_states 메서드가 없습니다.
# 이 메서드는 TensorFlow 2.6 버전에서 제거되었습니다.
# 대신 다음과 같은 방법으로 상태를 초기화할 수 있습니다:
# tf.compat.v1.reset_default_graph() 사용:
# 이 함수를 호출하여 그래프의 상태를 초기화할 수 있습니다.


model = Sequential()
model.add(LSTM(512, activation='tanh',
input_shape = (1, 45),
return_sequences = False, stateful=True))
model.add(Dense(n_features, activation='relu'))
model.compile(optimizer = 'adam', loss='mse', metrics=['accuracy'])


class end_epoch(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
tf.compat.v1.reset_default_graph()

history =model.fit(x=X_samples, y=y_samples, batch_size=1, epochs=250
validation_split=0.15, verbose=1, shuffle=False
callbacks=[end_epoch()])

과 같은 방법으로 해결하여야 한다.

2024년 3월 28일 목요일

prophet 를 이용하여 시계열 예측을 할때 설치가 안될때(fbprophet)

 pip install fbprophet 으로 설치가 안될때

python -m pip install prophet 으로 설치하고. fbprophet을 prophet으로 바꾸어 준다.



from prophet import Prophet

from prophet.plot import plot_plotly, plot_components_plotly



StockCode = '247540'
stock = fdr.DataReader(StockCode, '2021-1-1')
stock.head()

  

stock['y'] = stock['Close']
stock['ds'] = stock.index
stock.head()


m = Prophet()
m.fit(stock)


feature = m.make_future_dataframe(periods=30)


forecast = m.predict(feature)


fig = m.plot(forecast)


하고 나면 


ValueError: Mime type rendering requires nbformat>=4.2.0 but it is not installed -> 


에러가 나온다


pip install nbformat

pip install --upgrade nbformat

한후

pip install ipykernel

커널을 다시설치하고, Reset kernel을 한다. 




2024년 3월 19일 화요일

windows powershell에서 가상환경 들어가기

 windows powershell에서 가상환경 들어가기위해 Activate.ps1을 실행하면

와 같이 들어가지 못한다.
powershell을 관리자모드로 실행한 후 정책을 바꾸어줘야 한다.
아래는 현재 정책을 확인하고 Remote로 밖는 과정을 보여준다.
결과. (참고로 파이썬에 http 서버가 있어서 같은 게이트웨이 내라면 서버로....) 



2024년 3월 18일 월요일

windows 에서 파이썬 3.8 버전 설치하기

 2024년 3월 현재 tenserflow 2.13을 설치하려면 파이썬 3.8버전을 설치해야하는데

파이썬 홈페이지에 들어가면 3.8버전의 소스만 있다 설치는?

윈도우의 cmd창을 연 다음 winget 명령을 실행해본다.

명령어가 실행되면 winget search python 해보면 설치할 수 있는 버전들이 보인다.

2번째 열이 id 이다.
이제 이렇게 설치하자
winget install --id Python.Python.3.8
설치되는 위치는 아래 이미지를 참고하시고

기본 Python 경로를 환경변수에서 패스를 지정해주면 된다.

시작 > 시스템 > 고급 시스템설정 > 환경변수 에서 path를 고쳐주면 된다.


cmd 창에서 python을 입력해보면 확인할 수 있다.

참고로 가상환경을 설정하려면 python -m venv venv 하면 루트에 venv폴더에 가상환경이 설치되고 가상환경실행은

c:\venv\Script\activate

를 실행해주면 됨. 프롬프트가 (venv)이렇게 바뀌면 성공.

파워셀에서라면 c:\venv\Scripts\Activate.ps1 







2024년 3월 14일 목요일

맥 가상환경상태에서 vscode(또는 다른 응용프로그램) 실행하기

 

맥 터미널에서 가상환경으로 들어간다음 vscode를 실행하고 커널선택을 하려고하면 가상환경이 나타나지 않는다. 

가상환경 찾기를 하여 인터프리터 링크를 선택하면  



전혀 엉뚱한 환경을 들어가서 pip list 해보면 설치된 패키지가 보이지 않는다.

이것은 python -m venv  venv --version=3.8 형식으로 기존에 설치된 버전을 링크하여 생성했기 때문인것 같다.

설정에서 settings.jason에서 편집을 찾아

"python.defaultInterpreterPath": "/Users/gilson/venv",


위와 같이 고쳐주면 된다.

! 아래내용 추가(2024. 4. 5)

viscose 에서는 해결했는데 다른 응용프로그램(RapidMiner)에서 같은 문제를 일으켜서 아에 링크를 찾아가서 python3.8 (실행파일)을 복사해와 가상환경 bin 폴더에 붙여넣기 하였더니 해결되었습니다.

2024년 3월 4일 월요일

intel imac에서 tensorflow gpu 사용하기

 우선 python3.8버전을 설치하여야합니다.

$ brew list 하여 python@3.8 버전이 설치되어 있는지 확인합니다.

설치는 $brew install phthon@3.8

링크는 $brew link python@3.8

확인은 $python3.8 --version

만약 필요가 없어지면 uninstall, unlink를 사용하면 됩니다.

가상환경을 만듭니다.

$python3.8 -m venv venv #2번째 venv는 폴더명

가상환경들어가기

$source ~/venv/bin/source

(venv) $ 로 프롬프트가 바뀜니다

(venv) $ python --version 하여 가상환경에 설치된 파이썬 버전을 확인합니다.

(venv) $ pip list 확인후 pip 버전을 업그레이드 합니다.

(venv) $ python -m pip install -U pip

(venv) $ pip install tensorflow-macos

(venv) $ pip install tensorflow-metal

(venv) $ code 하여 vscode를 실행합니다

import tensorflow as tf
devices = tf.config.list_physical_devices()
print("\nDevices: ", devices)

gpus = tf.config.list_physical_devices('GPU')
if gpus:
details = tf.config.experimental.get_device_details(gpus[0])
print("GPU details: ", details)

을 실행하여 확인합니다.

처음실행하면 vscode에서 ikernel을 자동으로 설치합니다.

결과는

Devices:  

[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), 

PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] GPU details: {'device_name': 'METAL'}

하여 확인할 수 있습니다.



조금 빨라지려나....

GPU를 사용하면 처리속도가 더 늦어지는 것 같음....

2024년 3월 1일 금요일

게임용 노트북에서 외장형GPU 사용하여 tensorflow 돌려보기

하루밤을 꼭세웠네요.

tensorflow 에서 외장 nVidia 4070 GPU를 사용하기위해..

HP VICTUS 015 버전에 windows 10이 설치됨.

결국 버전 문제였습니다.

Tensorflow 2.11 Windows 시스템에서 GPU를 지원하지 않습니다. 

Tensorflow 2.10는 네이티브 윈도우에서 GPU를 지원한 마지막 TensorFlow 릴리스였습니다.

따라서 GPU 설정을 위해 TensorFlow 2.10을 설치하여 시도할 수 있습니다. 

시스템에 GPU 지원을 위해 특정 버전의 CUDA 및 cuDNN을 설치해야 합니다.

(Tensorflow 2.10(Tensorflow>=2.5)의 경우 cuDNN).CUDA 11.28.1


cuda_11.2.0_460.89_win10.exe을 설치하고

cudnn-windows-x86_64-8.9.7.29_cuda11-archive.zip 을 다운받아 압축을 해제하고

CUDA가 설치된 폴더에 복사합니다.(bin, include, lib 폴더)

저의경우에는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2



python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"











tensorflow gpu 사용하기에서

 tensorflow 설치시 주의해야 한다. # Anything above 2.10 is not supported on the GPU on Windows Native python - m pip install "tensorflow<2.11...