새로운 프로젝트에는 YDF를 선호합니다
YDF는 Decision Forests를 교육하기 위한 Google의 새로운 라이브러리입니다.
YDF는 TF-DF의 성능을 확장하여 새로운 기능, 단순화된 API, 더 빠른 훈련 시간, 업데이트된 문서 및 인기 있는 ML 라이브러리와의 향상된 호환성을 제공합니다.
아래 언급된 문제 중 일부는 YDF에서 수정되었습니다.
Windows Pip 패키지를 사용할 수 없습니다.
TensorFlow Decision Forests는 아직 Windows Pip 패키지로 제공되지 않습니다.
해결 방법:
- 해결 방법 1: Windows 컴퓨터에 WSL(Linux용 Windows 하위 시스템)을 설치하고 Linux 지침을 따릅니다.
Keras 3과의 비호환성
Keras 3과의 호환성은 아직 구현되지 않았습니다. tf_keras 또는 2.16 이전의 TensorFlow 버전을 사용하세요. 또는 ydf 를 사용하세요.
콘다에 대해서는 테스트되지 않았습니다.
TF-DF는 Conda와 함께 작동할 수 있지만 테스트되지 않았으며 현재 conda-forge에서 패키지를 유지 관리하지 않습니다.
TensorFlow의 이전 버전 또는 Nightly 버전과의 비호환성
TensorFlow의 ABI는 릴리스 간에 호환되지 않습니다. TF-DF는 사용자 정의 TensorFlow C++ 작업에 의존하기 때문에 TF-DF의 각 버전은 특정 버전의 TensorFlow에 연결됩니다. TF-DF의 마지막 릴리스 버전은 항상 TensorFlow의 마지막 릴리스 버전과 연결되어 있습니다.
이러한 이유로 현재 버전의 TF-DF는 이전 버전이나 TensorFlow의 Nightly 빌드와 호환되지 않을 수 있습니다.
호환되지 않는 TF 및 TF-DF 버전을 사용하는 경우 다음과 같은 알 수 없는 오류가 표시됩니다.
tensorflow_decision_forests/tensorflow/ops/training/training.so: undefined symbol: _ZN10tensorflow11GetNodeAttrERKNS_9AttrSliceEN4absl14lts_2020_09_2311string_viewEPSs
- TensorFlow 버전과 호환되는 TF-DF 버전을 사용하세요.
호환성 표
다음 표는 tensorflow_decision_forests
와 해당 종속성 간의 호환성을 보여줍니다.
tensorflow_decision_forests | 텐서플로우 |
---|---|
1.11.0 | 2.18.0 |
1.10.0 | 2.17.0 |
1.9.2 | 2.16.2 |
1.9.1 | 2.16.1 |
1.9.0 | 2.16.1 |
1.8.0 - 1.8.1 | 2.15.0 |
1.6.0 - 1.7.0 | 2.14.0 |
1.5.0 | 2.13.0 |
1.3.0 - 1.4.0 | 2.12.0 |
1.1.0 - 1.2.0 | 2.11.0 |
1.0.0 - 1.0.1 | 2.10.0 - 2.10.1 |
0.2.6 - 0.2.7 | 2.9.1 |
0.2.5 | 2.9 |
0.2.4 | 2.8 |
0.2.1 - 0.2.3 | 2.7 |
0.1.9 - 0.2.0 | 2.6 |
0.1.1 - 0.1.8 | 2.5 |
0.1.0 | 2.4 |
- 해결 방법 #2: 입력을 압축하는 다른 함수로 전처리 함수를 래핑합니다.
모든 모델이 분산 학습 및 분산 전략을 지원하는 것은 아닙니다.
지정하지 않는 한 모델은 단일 시스템에서 학습되며 배포 전략과 호환되지 않습니다. 예를 들어 GradientBoostedTreesModel
은 분산 훈련을 지원하지 않지만 DistributedGradientBoostedTreesModel
지원합니다.
해결 방법:
- 배포 전략을 지원하는 모델(예:
DistributedGradientBoostedTreesModel
)을 사용하거나 데이터세트를 다운샘플링하여 단일 시스템에 맞도록 합니다.
GPU/TPU를 지원하지 않습니다.
TF-DF는 GPU 또는 TPU 훈련을 지원하지 않습니다. 그러나 AVX 명령어로 컴파일하면 서비스 속도가 빨라질 수 있습니다.
model_to_estimator 는 지원되지 않습니다.
TF-DF는 훈련된/훈련되지 않은 모델을 추정기 형식으로 변환하는 데 필요한 API를 구현하지 않습니다.
로드된 모델은 Python 모델과 다르게 동작합니다.
Keras API로 추상화되는 동안 Python에서 인스턴스화된 모델(예: tfdf.keras.RandomForestModel()
)과 디스크에서 로드된 모델(예: tf_keras.models.load_model()
)은 다르게 동작할 수 있습니다. 특히 Python 인스턴스화 모델은 필요한 유형 변환을 자동으로 적용합니다. 예를 들어, float64
기능이 float32
기능을 기대하는 모델에 제공되면 이 변환은 암시적으로 수행됩니다. 그러나 디스크에서 로드된 모델의 경우 이러한 변환이 불가능합니다. 따라서 훈련 데이터와 추론 데이터가 항상 정확히 동일한 유형을 갖는 것이 중요합니다.
Tensorflow 기능 이름 삭제
Tensorflow는 기능 이름을 삭제하고 예를 들어 이를 소문자로 변환할 수 있습니다.