주요 AI, ML 및 DL 사용 사례 및 아키텍처
주요 AI, ML 및 DL 사용 사례 및 방법론을 다음 절로 나눌 수 있습니다.
NLP 파이프라인 및 TensorFlow 분산 추론을 스파크합니다
다음 목록에는 데이터 과학 커뮤니티가 다양한 개발 수준에서 채택한 가장 널리 사용되는 오픈 소스 NLP 라이브러리가 포함되어 있습니다.
-
"자연어 도구 키트(NLTK)". 모든 NLP 기술에 대한 완벽한 도구 키트. 2000년대 초반부터 유지되었습니다.
-
"텍스트 부분". NLTK 및 패턴 위에 구축된 사용하기 쉬운 NLP 도구 Python API.
-
"스탠포드 코어 NLP". 스탠포드 NLP Group이 개발한 Java의 NLP 서비스 및 패키지.
-
"젠심". 인간을 위한 주제 모델링은 체코 디지털 수학 라이브러리 프로젝트를 위한 Python 스크립트의 모음으로 시작되었습니다.
-
"스파이". 트랜스포머용 GPU 가속 기능을 갖춘 Python 및 Cython을 사용한 엔드 투 엔드 산업용 NLP 워크플로.
-
"빠른 텍스트". Facebook의 AI 연구(Fair) 연구소에서 만든 단어 인식 및 문장 분류용 무료 경량 오픈 소스 NLP 라이브러리.
SPARK NLP는 모든 NLP 작업 및 요구 사항을 충족하는 단일 통합 솔루션으로, 실제 생산 사용 사례에 맞게 확장 가능하고 성능이 뛰어나며 정확도가 높은 NLP 기반 소프트웨어를 지원합니다. 이 제품은 전송 학습을 활용하고 연구 및 산업 전반에 걸쳐 최신 최신 알고리즘 및 모델을 구현합니다. Spark는 위의 라이브러리에 대한 완벽한 지원이 부족하기 때문에 Spark NLP를 기반으로 구축되었습니다 "스파크 ML" Spark의 범용 인메모리 분산 데이터 처리 엔진을 미션 크리티컬 프로덕션 워크플로우를 위한 엔터프라이즈급 NLP 라이브러리로 활용하십시오. 주석 달기 는 규칙 기반 알고리즘, 머신 러닝 및 TensorFlow를 활용하여 딥 러닝 구현을 지원합니다. 여기에는 토큰화, 레몬화, 스테밍, 부분 음성 태깅, 명명된 엔터티 인식 등을 포함한 일반적인 NLP 작업이 포함됩니다. 맞춤법 검사 및 정서 분석.
Transformers(BERT)의 양방향 인코더 표현은 NLP를 위한 변압기 기반 기계 학습 기술입니다. 사전 교육과 미세 조정 개념을 대중화했습니다. BERT의 변압기 아키텍처는 재발성 신경망(RNN) 기반 언어 모델보다 장기적인 종속성을 더 잘 모델링하는 기계 번역에서 비롯되었습니다. 또한 MLM(Masked Language Modeling) 작업도 도입되었으며, 이 작업에서는 모든 토큰의 임의 15%가 마스킹되고 모델이 이를 예측하여 진정한 방향성을 가능하게 합니다.
전문 언어와 해당 영역에 레이블이 지정된 데이터가 없기 때문에 재무 감정의 분석은 어렵습니다. 사전 교육을 받은 BERT에 기반한 언어 모델인 FinBERT는 금융 기관으로 도메인 적용 "로이터 TRC2", 금융 감정 분류를 위해 레이블 데이터()로 미세 조정되었습니다. "금융 서비스 은행" 연구원들은 재무 용어로 뉴스 기사에서 4개, 500개 문장을 추출했습니다. 그때 16명의 전문가들과 재정 배경을 가진 대학생들은 그 문장을 긍정적이고 중립적이며 부정적으로 표시했다. 우리는 Spark NLP의 FinBERT와 두 개의 사전 훈련 파이프라인을 사용하여 2016년부터 2020년까지 NASDAQ 회사 수익 통화 기록에 대한 정서를 분석하는 엔드 투 엔드 Spark 워크플로를 "문서 DL을 설명합니다" 구축했습니다.
Spark NLP를 위한 기본 딥 러닝 엔진은 손쉬운 모델 구축, 어디서나 강력한 ML 생산, 연구를 위한 강력한 실험을 지원하는 기계 학습용 엔드 투 엔드 오픈 소스 플랫폼인 TensorFlow입니다. 따라서 Spark 'YARN 클러스터' 모드에서 파이프라인을 실행할 때 기본적으로 하나의 마스터 노드와 여러 작업자 노드 및 클러스터에 마운트된 네트워크 연결 스토리지에서 데이터와 모델 병렬화를 통해 분산된 TensorFlow를 실행하고 있었습니다.
Horovod의 분산 훈련
MapReduce 관련 성능을 위한 핵심 Hadoop 검증은 TeraGen, TeraSort, TeraValidate 및 DFSIO(읽기 및 쓰기)를 통해 수행됩니다. TeraGen 및 TeraSort 검증 결과는 https://www.netapp.com/pdf.html?item=/media/16420-tr-3969pdf.pdf E-Series에 대해, 그리고 AFF의 "스토리지 계층화"(xref) 섹션에 나와 있습니다.
고객의 요청에 따라 Spark와 함께 분산된 교육을 다양한 사용 사례 중 가장 중요한 것으로 간주합니다. 이 문서에서는 을 사용했습니다 "Spark의 Hoborod" AFF(All Flash FAS) 스토리지 컨트롤러, Azure NetApp Files 및 StorageGRID를 사용하여 NetApp 사내, 클라우드 네이티브 및 하이브리드 클라우드 솔루션을 통해 Spark 성능을 검증합니다.
Horovod on Spark 패키지는 Spark 클러스터에서 분산된 훈련 워크로드를 간단하게 실행할 수 있도록 Horovod를 둘러싸는 편리한 래퍼를 제공합니다. 따라서 훈련 및 추론 데이터가 상주하는 Spark에서 데이터 처리, 모델 훈련 및 모델 평가를 모두 수행하는 엄격한 모델 설계 루프를 사용할 수 있습니다.
Spark에서 Horovod를 실행하기 위한 두 가지 API(고급 추정기 API 및 하위 수준의 Run API)가 있습니다. 둘 다 동일한 기본 메커니즘을 사용하여 Spark 실행기에서 Horovod를 실행하지만 Estimator API는 데이터 처리, 모델 훈련 루프, 모델 체크포인트, 메트릭 수집 및 분산 교육을 추상화합니다. Horovod Spark Estimators, TensorFlow 및 Keras를 사용하여 에 기반한 엔드 투 엔드 데이터 준비 및 분산 교육 워크플로를 사용했습니다 "Kaggle Rossmann 매장 판매" 경쟁업체.
'keras_spark_horovod_rossmann_estimator.py' 스크립트는 섹션에서 찾을 수 있습니다 "주요 활용 사례별로 Python 스크립트" 여기에는 다음 세 가지 부분이 포함됩니다.
-
첫 번째 부분은 Kaggle이 제공하고 커뮤니티에서 수집한 초기 CSV 파일 세트에 대해 다양한 데이터 전처리 단계를 수행합니다. 입력 데이터는 '검증' 하위 세트와 테스트 데이터 세트가 있는 교육 세트로 구분됩니다.
-
두 번째 부분은 로그 시그마리드 활성화 기능과 ADAM 옵티마이저가 있는 Keras Deep Neural Network(DNN) 모델을 정의하고 Spark On을 사용하여 모델 분산 훈련을 수행합니다.
-
세 번째 부분은 검증 세트의 전체 평균 절대 오류를 최소화하는 최상의 모델을 사용하여 테스트 데이터 세트에 대한 예측을 수행합니다. 그런 다음 출력 CSV 파일을 만듭니다.
섹션을 참조하십시오 "“머신 러닝”" 다양한 런타임 비교 결과.
CTR 예측에 Keras를 사용한 다중 작업자 딥 러닝
최근 ML 플랫폼 및 애플리케이션의 발전으로 이제 대규모 학습에 많은 관심이 집중되고 있습니다. 클릭 비율(CTR)은 온라인 광고 노출 100회 당 평균 클릭 수(백분율로 표시)로 정의됩니다. 디지털 마케팅, 소매, 전자 상거래 및 서비스 공급자를 포함한 다양한 산업 및 사용 사례에서 핵심 메트릭으로 널리 채택되고 있습니다. 자세한 내용은 를 참조하십시오 "TR-4904: Azure에서 제공되는 분산 교육 - 클릭 비율 예측" CTR 및 Kubernetes를 통한 엔드 투 엔드 클라우드 AI 워크플로우 구현, 분산된 데이터 ETL, Dask 및 CUDA ML을 사용한 모델 교육에 대한 자세한 내용을 확인하십시오.
이 기술 보고서에서는 의 변형을 사용했습니다 "Criteo Terabyte Click Logs 데이터 세트" (TR-4904 참조) Keras를 사용하여 여러 작업자가 딥 및 크로스 네트워크(DCN) 모델로 Spark 워크플로를 구축하여 로그 손실 오류 기능과 기준 Spark ML 회귀 모델의 성능을 비교한 딥 러닝(Deep and Cross Network) 모델에 대해 알아보십시오. DCN은 경계가 지정된 수준의 효과적인 기능 상호 작용을 효율적으로 캡처하고, 고도의 비선형 상호 작용을 학습하며, 수동 기능 엔지니어링 또는 철저한 검색이 필요하지 않으며, 계산 비용이 낮습니다.
웹 스케일 추천 시스템을 위한 데이터는 대부분 불연속적이고 범주적이며, 이는 기능 탐색이 어려운 크고 부족한 기능 공간으로 이어집니다. 이는 대부분의 대규모 시스템을 물류 회귀와 같은 선형 모델로 제한합니다. 그러나 자주 예측 가능한 기능을 식별하고 보이지 않거나 희귀한 크로스 기능을 탐색하는 것은 좋은 예측을 위한 열쇠입니다. 선형 모델은 단순하고, 해석 가능하며, 확장이 쉽지만 표현 능력이 제한적입니다.
반면 크로스 기능은 모델의 표현 능력을 향상시키는 데 중요한 것으로 나타났습니다. 하지만 이러한 기능을 식별하려면 수동 기능 엔지니어링이나 철저한 검색이 필요한 경우가 많습니다. 보이지 않는 피처 상호작용에 일반화하기는 어려운 경우가 많습니다. DCN과 같은 교차 신경망(cross neural network)을 사용하면 자동 방식으로 기능적으로 명시적으로 교차하여 작업별 기능별 엔지니어링을 피할 수 있습니다. 크로스 네트워크는 다중 계층으로 구성되어 있으며, 이 경우 가장 높은 수준의 상호 작용이 레이어 깊이에 따라 결정될 수 있습니다. 각 계층은 기존 레이어를 기반으로 보다 높은 수준의 상호 작용을 생성하고 이전 레이어의 상호 작용을 유지합니다.
DNN(Deep Neural Network)은 여러 기능에서 매우 복잡한 상호 작용을 포착할 수 있는 가능성을 가지고 있습니다. 그러나 DCN과 비교할 때 거의 많은 매개변수가 필요하며, 상호 기능을 명시적으로 구성할 수 없으며, 일부 유형의 기능 상호 작용을 효율적으로 학습하지 못할 수 있습니다. 크로스 네트워크는 메모리 효율적이고 구현하기 쉽습니다. 상호 및 DNN 구성 요소를 공동으로 교육하여 예측 가능한 기능 상호 작용을 효율적으로 캡처하고 Critio CTR 데이터 세트에 대한 최첨단 성능을 제공합니다.
DCN 모델은 포매 및 스태킹 계층, 크로스 네트워크 및 딥 네트워크를 병렬로 사용하여 시작합니다. 두 네트워크의 출력을 결합하는 최종 조합 계층이 이어집니다. 입력 데이터는 희소 및 고밀도 피처를 가진 벡터가 될 수 있습니다. Spark에서 라이브러리에는 형식이 SparseVector`포함됩니다. 따라서 사용자는 두 가지 기능을 구분할 수 있어야 하며 각 함수와 메서드를 호출할 때 유의해야 합니다. CTR 예측과 같은 웹 기반 추천 시스템에서 입력은 대부분 범주형 `‘country=usa’
기능입니다. 이러한 기능은 종종 핫 벡터(예: 1-hot vector)로 인코딩됩니다. ‘[0,1,0, …]’
OHE(one-hot-encoding) `SparseVector`는 끊임없이 변화하고 증가하는 어휘로 인해 실제 데이터세트를 처리할 때 유용합니다. 우리는 DCN의 포매 및 스태킹 레이어에 포매 벡터를 생성하도록 의 예를 수정했습니다. "DeepCTR"
를 클릭합니다 "Criteo Display Ads 데이터 세트" 광고 클릭률을 예측합니다. 13개의 정수 기능과 각 범주에 높은 카디널리티가 있는 26개의 범주 기능이 있습니다. 이 데이터 세트의 경우 입력 크기가 커서 로그손실이 0.001로 향상되는 것이 실질적으로 중요합니다. 대규모 사용자 기반의 예측 정확도가 약간 개선되는 경우 회사의 수익이 크게 증가할 수 있습니다. 데이터 세트에는 7일 동안 11GB의 사용자 로그가 포함되어 있으며, 이는 약 4100만 개의 레코드에 해당합니다. Spark dataFrame.RandomSplit() 기능을 사용하여 교육(80%), 교차 검증(10%) 및 나머지 10%의 테스트 데이터를 무작위로 분할했습니다.
DCN은 Keras를 통해 TensorFlow에 구현되었습니다. DCN을 통해 모델 교육 프로세스를 구현하는 주요 구성 요소는 다음과 같습니다.
-
* 데이터 처리 및 포함. * 실제 가치가 있는 기능은 로그 변환을 적용하여 정규화됩니다. 카테고리 피처의 경우, 치수 6 × (카테고리 카디널리티) 1/4의 고밀도 벡터에 피처를 포함시킵니다. 모든 임베디드 디딩을 연결하면 치수 1026의 벡터가 됩니다.
-
최적화. * ADAM 옵티마이저를 사용하여 미니 배치 확률적 최적화를 적용했습니다. 배치 크기가 512로 설정되었습니다. 배치 정규화가 딥 네트워크에 적용되고 그레이디언트 클립 표준은 100으로 설정되었습니다.
-
"규칙화." 우리는 L2 규칙화 또는 중도탈락이 효과가 없는 것으로 확인됨에 따라 조기 정지에 사용했습니다.
-
* Hyperparameters. * 숨겨진 계층 수, 숨겨진 계층 크기, 초기 학습 속도 및 교차 계층 수에 대한 그리드 검색을 기반으로 결과를 보고합니다. 숨겨진 레이어의 수는 2-5개까지이며 숨겨진 레이어 크기는 32-1024입니다. DCN의 경우 교차 계층 수는 1에서 6까지 있었습니다. 초기 학습 속도는 0.0001에서 0.0001로 조정되었으며 0.0001씩 증가하였습니다. 모든 실험은 훈련 단계 150,000에 일찍 멈추어 적용되었고, 그 이후에는 과다 피팅이 발생하기 시작했습니다.
검증에 사용된 아키텍처
이 검증을 위해 4개의 작업자 노드와 AFF-A800 HA 쌍의 1개의 마스터 노드를 사용했습니다. 모든 클러스터 구성원이 10GbE 네트워크 스위치를 통해 연결되었습니다.
이러한 NetApp Spark 솔루션 검증을 위해 E5760, E5724, AFF-A800의 3가지 스토리지 컨트롤러를 사용했습니다. E-Series 스토리지 컨트롤러는 12Gbps SAS로 연결된 5개의 데이터 노드에 연결되었습니다. AFF HA 쌍 스토리지 컨트롤러는 10GbE 연결을 통해 Hadoop 작업자 노드에 내보낸 NFS 볼륨을 제공합니다. Hadoop 클러스터 멤버는 E-Series, AFF 및 StorageGRID 하둡 솔루션에서 10GbE 연결을 통해 연결했습니다.