머신러닝 워크플로우는 머신러닝 모델을 개발, 교육, 평가 및 배포하는 체계적인 프로세스입니다. 여기에는 문제 정의에서 솔루션 배포에 이르기까지 머신러닝 프로젝트의 전체 수명 주기 동안 실무자를 안내하는 일련의 단계가 포함됩니다.
머신러닝 워크플로우가 중요한 이유는 무엇일까요?
머신러닝 워크플로우는 다음을 지원합니다.
- 명확성 및 집중력: 잘 정의된 워크플로우는 프로젝트 목표, 역할 및 책임을 명확하게 정의하여 모든 팀원이 원하는 결과를 달성하고자 하는 데 집중할 수 있도록 지원합니다.
- 효율성 및 생산성: 구조화된 워크플로우는 복잡한 머신러닝 프로젝트를 해결하기 위한 체계적인 접근 방식을 제공합니다. 이를 통해 업무 구성, 리소스 관리 및 진행 상황 추적에 도움이 되므로 효율성과 생산성이 향상됩니다.
- 품질 보증: 체계적인 워크플로우를 사용하면 머신러닝 프로세스의 각 단계를 체계적으로 실행할 수 있으며, 이는 프로젝트 라이프사이클 초기에 잠재적인 문제를 식별하고 해결하는 데 도움이 됩니다.
- 재현성 및 확장성: 잘 정의된 워크플로우는 개발 프로세스 동안 취해진 모든 단계를 문서화하여 결과를 보다 쉽게 복제하고 향후 프로젝트에 맞게 조정하고 재사용할 수 있는 프레임워크를 제공합니다.
- 리스크 관리: 머신러닝 워크플로우는 프로젝트 라이프사이클 초기에 잠재적 위험과 불확실성을 식별하여 위험 관리를 개선하며, 프로젝트 실패 가능성을 낮추는 사전 예방적인 완화 전략을 구현할 수 있도록 합니다.
일반적인 머신러닝 워크플로우 단계는 무엇인가요?
일반적인 머신러닝 워크플로우에는 다음 단계가 포함됩니다.
문제 정의 - 해결할 문제를 명확하게 정의하고 프로젝트 목표를 수립합니다. 이 단계에는 비즈니스 컨텍스트를 이해하고, 관련 데이터 소스를 식별하고, 주요 성과 지표를 정의하는 것이 포함됩니다.
데이터 수집 및 전처리 - 다양한 소스에서 필요한 데이터를 수집하고 전처리하여 깨끗하고 일관되며 분석 준비가 되었는지 확인합니다. 이 단계에는 데이터 정리, 기능 엔지니어링 및 데이터 변환과 같은 작업이 포함될 수 있습니다.
인사이트를 확보하고 패턴, 트렌드 및 관계를 파악하기 위해 데이터를 탐색하는 탐색적 데이터 분석(EDA ) EDA는 데이터의 특성을 이해하고 기능 선택, 모델 선택 및 데이터 전처리 전략에 대한 결정을 내리는 데 도움을 줍니다.
모델 선택 및 트레이닝 - 문제 요구 사항 및 데이터 특성에 따라 적절한 머신러닝 알고리즘 및 기술을 선택하고, 준비된 데이터를 사용하여 선택한 모델을 트레이닝하며, 적절한 평가 지표를 사용하여 성능을 평가합니다.
모델 평가 및 튜닝 - 교차 검증 및 하이퍼파라미터 튜닝 방법과 같은 검증 기법을 사용하여 트레이닝된 모델의 성능을 평가하여 모델 성능을 최적화합니다.
트레이닝된 모델을 프로덕션 환경에 배포하고, 기존 시스템에 통합하고, 실제 시나리오에서 모델 성능을 모니터링하고, 필요에 따라 업데이트하여 지속적인 효율성을 보장할 수 있는 모델 배포 및 모니터링 .
각 단계에 대해 좀 더 자세히 알아보겠습니다.
문제 정의
문제를 정의하려면:
1. 비즈니스 목표 이해
문제를 정의하는 첫 번째 단계는 보다 광범위한 비즈니스 목표와 목적을 이해하는 것입니다. 이는 이해관계자들과 긴밀하게 협력하여 머신러닝으로 해결하고자 하는 주요 비즈니스 과제나 기회를 파악하는 것을 의미합니다.
2. 문제 진술서 작성
이러한 비즈니스 목표를 바탕으로 명확하고 간결한 문제 진술을 고안합니다. 이 선언문은 예측, 분류 또는 최적화가 필요한 사항과 전반적인 비즈니스 목표에 부합하는 방법을 명시해야 합니다. 또한 데이터 가용성, 실행 가능성 및 잠재적 영향과 같은 요인을 고려해야 합니다.
3. 성공 기준 정의
머신러닝 솔루션의 성능을 평가하는 데 사용할 수 있는 측정 가능한 성공 기준 또는 핵심 성과 지표(KPI)를 수립합니다. 이들은 문제 진술 및 원하는 비즈니스 결과에 부합해야 합니다.
4. 데이터 요구사항 및 제약 조건 파악
데이터 유형(정형 또는 비정형), 소스, 품질 고려 사항, 데이터 사용과 관련된 규제 또는 윤리적 제약을 포함하여 문제 해결을 위한 데이터 요구 사항을 식별합니다. 데이터 제한과 제약을 미리 이해하면 현실적인 기대치를 설정하고 데이터 수집 및 전처리 전략을 계획하는 데 도움이 됩니다.
5. 위험 평가
예비 위험 평가를 수행하여 문제 정의와 관련된 잠재적 위험 및 도전과제를 파악합니다. 여기에는 데이터 품질, 모델 복잡성, 해석 가능성, 규정 준수 및 비즈니스 영향과 관련된 위험이 포함됩니다. 프로젝트 초기에 위험 완화 전략을 개발하면 이러한 문제를 사전에 해결하는 데 도움이 될 수 있습니다.
6. 문제 정의 문서화
마지막으로, 문제 진술, 성공 기준, 데이터 요건, 범위, 제약 및 위험 평가 결과를 포함한 문제 정의를 문서화합니다. 본 문서는 모든 관련 이해관계자를 위한 참고 자료이며, 머신러닝 워크플로우 전반에 걸쳐 조율하는 데 도움이 됩니다.
데이터 수집
머신러닝 프로젝트와 관련된 데이터를 수집하는 것은 모델의 성능과 결과에 상당한 영향을 미칠 수 있는 중요한 단계입니다.
데이터 수집을 위한 단계별 프로세스와 안정성 및 품질을 보장하기 위한 팁은 다음과 같습니다.
1. 목표 정의
머신러닝 프로젝트의 목표를 명확하게 정의하세요. 답을 원하는 질문과 해결하고자 하는 문제를 이해합니다. 이는 가장 관련성이 높은 정보를 수집하기 위한 데이터 수집 노력을 안내합니다.
2. 데이터 소스 식별
필요한 데이터를 어디에서 찾을 수 있는지 알아보세요. 데이터 소스는 프로젝트의 특성에 따라 다를 수 있지만, 일반적인 소스는 다음과 같습니다.
Kaggle, UCI 머신러닝 리포지토리 및 정부 데이터베이스와 같은 웹사이트.
API: 많은 조직이 API를 통해 프로그래밍 방식으로 데이터에 액세스합니다.
웹 스크래핑: 뷰티풀 수프나 스크래피와 같은 도구를 사용하여 웹사이트에서 데이터를 추출합니다.
내부 데이터베이스: 해당하는 경우 조직의 데이터베이스에 저장된 데이터를 사용합니다.
설문조사 또는 인터뷰: 설문조사 또는 인터뷰를 통해 사용자 또는 도메인 전문가로부터 직접 데이터를 수집합니다.
3. 데이터 품질 평가
데이터를 수집하기 전에 그 품질을 평가하여 프로젝트에 적합한지 확인하십시오. 다음 요소를 고려하십시오.
정확성 : 데이터에 오류나 불일치가 없습니까?
완전성: 데이터 세트가 필요한 모든 변수와 기록을 포함합니까?
일관성: 데이터 값이 서로 다른 소스 또는 기간에 걸쳐 일관적입니까?
관련성 : 데이터에 목표를 달성하는 데 필요한 정보가 포함되어 있습니까?
적시성: 데이터가 최신 상태이며 분석과 관련이 있습니까?
데이터 수집 방법: 데이터 소스에 따라 데이터를 수집하는 적절한 방법을 선택했습니까?
4. 데이터 소스 및 처리 단계 문서화
데이터 소스, 수집 방법, 전처리 단계 및 데이터에 적용된 모든 변환에 대한 포괄적인 문서를 유지합니다. 이 문서는 투명성, 재현성 및 협업에 매우 중요합니다.
5. 반복
데이터 수집은 반복적인 프로세스입니다. 데이터를 분석하고 모델을 구체화할 때, 기존 데이터 세트에 대한 추가 데이터 또는 조정이 필요할 수 있습니다. 데이터의 관련성과 품질을 지속적으로 평가하여 머신러닝 모델의 정확성과 효율성을 향상시키세요.
데이터 전처리
데이터 전처리는 머신러닝 및 데이터 사이언스 프로젝트 분석을 위해 원시 데이터를 준비하는 프로세스입니다. 모델링 및 분석에 적합하도록 데이터를 정리, 변환 및 정리하는 작업이 포함됩니다. 또한 데이터 품질, 기능 엔지니어링, 모델 성능 및 데이터 호환성에도 도움이 됩니다.
데이터 전처리의 몇 가지 주요 측면과 누락된 데이터, 이상치 및 데이터 정규화 처리에 대한 지침은 다음과 같습니다.
1. 누락된 데이터 처리
데이터 세트에 누락된 값이 있는 열 또는 기능을 식별하는 것부터 시작합니다. 그런 다음, 결측 데이터의 특성에 따라 평균, 중앙값, 모드와 같은 적절한 대치 방법을 선택하거나 예측 모델을 사용하여 결측 값을 입력합니다. 결측값이 너무 많거나 안정적으로 대치할 수 없는 경우, 결측 데이터가 있는 행이나 열을 삭제하는 것을 고려하십시오. 범주형 기능의 경우, 누락된 값을 나타내기 위해 새 범주를 추가하거나 범주형 변수에 대한 모드 대치와 같은 기법을 사용하는 것이 좋습니다.
2. 이상치 처리
이상치를 처리하려면:
- 박스 플롯, Z-스코어 또는 IQR(사분위수 범위)과 같은 통계 방법을 사용하여 숫자 데이터의 이상치를 식별합니다.
- 데이터 세트에서 극단적인 이상치를 제거합니다.
- 가장 가까운 비이상치로 대체하여 극단값을 제한합니다.
- 로그, 제곱근 또는 Box-Cox 변환과 같은 변환을 적용하여 데이터를 더 정상적으로 분산시키고 이상치의 영향을 줄입니다.
- 데이터에서 진정한 이상이나 오류를 나타낼 수 있는 이상치를 검증하려면 도메인 전문가와 상담하세요.
3. 데이터 정규화
데이터 정규화 단계는 다음과 같습니다.
a. 표준화(Z-점수 정규화): 평균 0과 표준 편차 1로 수치적 특징을 변환합니다. 유사한 범위로 기능을 확장하여 비교할 수 있도록 지원합니다.
b. 최소-최대 확장: 기능을 일반적으로 0~1의 특정 범위로 확장하여 데이터 포인트 간의 상대적 관계를 유지합니다.
c. 강력한 확장: 중앙값과 사분위수 범위로 데이터를 확장하여 이상치에 덜 민감하게 만드는 RobustScaler와 같은 강력한 스케일링 기법을 사용하세요.
기능 엔지니어링
피처 엔지니어링은 원시 데이터를 모델링에 더 적합한 형식으로 변환하는 것을 포함합니다. 머신러닝 모델의 성능을 개선하기 위해 새로운 기능을 만들고, 중요한 기능을 선택하고, 기존 기능을 혁신하는 데 중점을 둡니다. 피처 엔지니어링은 모델 정확도에 매우 중요하며, 오버피팅을 줄이고 모델의 일반화 기능을 향상시킵니다.
다음은 몇 가지 일반적인 피처 엔지니어링 기법에 대한 설명과 예시입니다.
원-핫 인코딩
원-핫 인코딩은 범주형 변수를 머신러닝 알고리즘에 입력할 수 있는 숫자 형식으로 변환합니다. 각 카테고리에 대해 바이너리 열을 생성하며, 1은 카테고리의 존재를 나타내고 0은 그렇지 않습니다. 예를 들어, 카테고리가 ‘레드’, ‘그린’, ‘블루’인 ‘컬러’ 기능을 고려해 보세요. 원-핫 인코딩 후, 이 기능은 3가지 바이너리 기능으로 변환됩니다. 각 기능이 해당 색상의 존재를 나타내는 경우, “Is_Red,” “Is_Green,” 및 “Is_Blue,”.
기능 확장
기능 스케일링은 유사한 스케일 또는 범위로 수치적 기능을 제공합니다. 또한, 알고리즘이 더 빠르게 융합되고, 트레이닝 중에 더 큰 규모의 기능이 지배적으로 사용되는 것을 방지합니다. 일반적인 스케일링 기술은 전술한 표준화 및 최소-최대를 포함한다.
치수 감소
치수 감소 기법은 대부분의 관련 정보를 유지하면서 기능 수를 줄입니다. 이를 통해 컴퓨팅 복잡성을 낮추고 모델 성능을 향상시키며 차원성을 피할 수 있습니다.
특징 추출
피처 추출에는 수학적 변환, 도메인 지식 또는 텍스트 처리 기술을 사용하여 기존 피처에서 새로운 피처를 만드는 작업이 포함됩니다. 데이터의 비선형 관계를 캡처하기 위해 다항식 기능의 조합을 생성하는 것이 한 가지 예가 될 것입니다. TF-IDF, 워드 임베딩 또는 워드백 표현과 같은 방법을 사용하여 텍스트 데이터를 숫자로 변환하는 것도 또 다른 예입니다.
모델 선택
특정 작업에 적합한 머신러닝 모델을 선택하는 것은 머신러닝 워크플로우의 중요한 단계입니다. 여기에는 문제의 특성, 가용 데이터, 원하는 모델 특성(예: 해석 가능성, 정확성) 및 컴퓨팅 리소스와 같은 다양한 요소를 고려하는 것이 포함됩니다.
모델 선택 과정에서 고려해야 할 주요 단계와 고려사항은 다음과 같습니다.
1. 문제 이해하기
먼저, 문제가 분류, 회귀, 클러스터링 또는 기타 유형의 작업인지 판단합니다. 데이터의 특징, 대상 변수(들), 데이터 크기, 데이터 배포 및 고유한 패턴이나 복잡성을 이해해야 합니다.
2. 후보 모델 선택
도메인 전문 지식을 활용하여 도메인의 유사한 작업에 일반적으로 사용되고 적합한 모델을 식별합니다. 이 중 중요한 부분은 문제 유형 및 데이터 특성에 따라 선형 모델, 트리 기반 모델, 지원 벡터 머신(SVM), 신경망, 앙상블 방법 등과 같은 다양한 유형의 머신러닝 모델을 고려하는 것입니다.
3. 모델 복잡성 및 해석 가능성 평가
모델의 복잡성과 데이터에서 복잡한 관계를 포착할 수 있는 용량을 고려하십시오. 딥러닝 신경망과 같은 보다 복잡한 모델은 예측 정확도를 높일 수 있지만, 계산 비용이 많이 들고 과적되기 쉽습니다. 애플리케이션 및 이해관계자의 요구사항에 따라 모델의 해석성이 중요한지 여부를 결정합니다. 선형 회귀 또는 의사결정 트리와 같은 간단한 모델은 심층 신경망과 같은 복잡한 블랙박스 모델에 비해 더 쉽게 해석할 수 있습니다.
4. 성과 지표 고려
분류 작업의 경우, 클래스 불균형 및 비즈니스 목표에 따라 정확성, 정밀도, 리콜, F1-score, ROC-AUC 등과 같은 지표를 고려하십시오. 회귀 작업의 경우 평균 제곱 오차(MSE), 평균 절대 오차(MAE), R 제곱 등과 같은 메트릭을 사용하여 모델 성능을 평가할 수 있습니다. 교차 검증, 트레인 테스트 분할 또는 시간 기반 검증(시계열 데이터의 경우)과 같은 적절한 검증 기법을 사용하여 모델 성능을 완전히 평가합니다.
5. 모델 비교 및 검증
간단한 기준 모델부터 시작하여 성능 벤치마크를 수립하세요. 적절한 교육/검증 데이터 세트를 사용하여 여러 후보자 모델을 교육하고, 선택한 지표를 사용하여 성과를 평가합니다. 그리드 검색, 임의 검색 또는 베이즈 최적화와 같은 기법을 사용하여 모델의 하이퍼매개 변수를 미세 조정하여 성능을 향상시키세요.
6. 최고의 모델 선택
모델 복잡성, 해석 가능성, 컴퓨팅 리소스 및 성능 지표 간의 균형을 고려한 다음, 홀드아웃 테스트 데이터 세트에서 최상의 성능을 발휘하는 모델을 평가하여 보이지 않는 데이터에 대한 일반화 기능을 보장합니다.
7. 반복 및 정제
모델 선택은 종종 반복적인 프로세스입니다. 선택한 모델이 원하는 기준을 충족하지 못하는 경우, 만족스러운 결과가 나올 때까지 기능 엔지니어링, 하이퍼파라미터를 개선하거나 다른 알고리즘을 시도하여 반복하십시오.
모델 교육
머신러닝 모델을 트레이닝하려면 선택한 알고리즘을 트레이닝 데이터에 맞춰 데이터의 패턴 및 관계를 학습해야 합니다. 이 프로세스에는 데이터를 트레이닝 및 검증 세트로 분할하고, 모델 매개변수를 최적화하며, 모델의 성능을 평가하는 것이 포함됩니다.
다음 단계를 자세히 살펴보겠습니다.
1. 데이터 분할
데이터 세트를 교육 및 검증/테스트 세트로 나눕니다. 일반적인 분할 비율은 교육/검증의 경우 70-30 또는 80-20으로, 검증 세트가 데이터의 실제 분포를 나타내도록 합니다.
2. 알고리즘 선택
문제 유형(분류, 회귀, 클러스터링) 및 데이터 특성에 따라 적절한 머신러닝 알고리즘 또는 알고리즘 앙상블을 선택하여 모델을 트레이닝합니다.
3. 모델 인스턴스화
파라미터를 초기화하여 선택한 모델의 인스턴스를 생성합니다. 예를 들어, Scikit-Learn이 포함된 Python에서는 다음과 같은 코드를 사용할 수 있습니다.
sklearn.linear_model에서 LogisticRegression 가져오기
모델 = LogisticRegression()
4. 모델 트레이닝
.fit() 방법을 사용하여 모델을 트레이닝 데이터에 맞춥니다. 이 단계에서는 데이터의 패턴과 관계를 학습합니다.
5. 모델 파라미터 최적화
하이퍼파라미터 튜닝을 수행하여 모델의 성능을 최적화하세요. 일반적인 기법으로는 그리드 검색, 임의 검색 또는 베이지안 최적화가 있습니다.
6. 모델 평가
검증/테스트 세트를 사용하여 훈련된 모델의 성능을 평가합니다. 정확도, 정밀도, 리콜, F1-score(분류용) 또는 평균 제곱 오차와 같은 관련 지표를 계산합니다.
7. 최종 모델 선택
검증 세트에서 모델의 성능에 만족하면, 배포 전에 학습을 극대화하기 위해 전체 트레이닝 데이터 세트(밸리데이션 데이터 포함)를 사용하여 최종 모델을 재교육합니다.
모델 배포
모델을 선택하고 트레이닝한 후에는 모델을 배포할 준비가 된 것입니다.
배포 단계는 다음과 같습니다.
1. 모델 직렬화
배포에 적합한 형식으로 트레이닝된 모델을 직렬화합니다. 일반적인 형식에는 피클(Python), PMML(Predictive Model Markup Language), ONNX(Open Neural Network Exchange) 또는 사용된 프레임워크에 따라 사용자 지정 형식이 포함됩니다.
2. 프로덕션 환경과의 통합
클라우드 플랫폼(AWS , Azure , Google Cloud), 온-프레미스 서버 또는 컨테이너화된 솔루션(Docker, Kubernetes )과 같은 적절한 구축 환경을 선택합니다. 선택한 배포 환경에 특정한 프레임워크 또는 라이브러리(예: 웹 API용 플라스크, TensorFlow 서비스 또는 서비스 모델용 PyTorch)를 사용하여 모델을 프로덕션 환경에 통합합니다.
3. 확장성 고려 사항
다양한 로드 및 확장성 요구 사항을 처리할 수 있도록 구축 아키텍처를 설계하세요. 동시 사용자, 배치 처리 및 리소스 활용과 같은 요소를 고려하십시오. 클라우드 기반의 자동 확장 기능 또는 컨테이너 오케스트레이션 툴을 사용해 수요에 따라 동적으로 확장하세요. AI 확장을 위한 데이터센터 현대화를 고려하세요.
4. 실시간 예측
필요한 경우 모델 배포가 실시간 예측을 지원하는지 확인합니다. 여기에는 들어오는 예측 요청을 신속하게 처리할 수 있도록 저지연 엔드포인트 또는 서비스를 설정하는 작업이 포함됩니다. 모델 퀀타이즈, 프루닝 또는 배포 환경에 기반한 하드웨어 가속기(예: GPU, TPU)를 사용하는 등의 기술을 통해 모델 추론 속도를 최적화하는 것을 고려해 보세요.
5. 모니터링 및 성능 지표
모니터링 솔루션을 구현하여 모델의 프로덕션 성능을 추적합니다. 예측 레이턴시, 처리량, 오류율 및 데이터 드리프트(시간 경과에 따른 입력 데이터 분포의 변화)와 같은 지표를 모니터링합니다. 중요한 성능 지표에 대한 경보 및 임계값을 설정하여 문제를 신속하게 감지하고 대응합니다.
6. 버전 및 모델 업데이트
배포된 모델에 대한 버전 관리 전략을 수립하여 변경 사항을 추적하고 필요한 경우 롤백을 용이하게 합니다. 새로운 데이터 또는 개선된 알고리즘을 기반으로 모델 업데이트를 배포하거나 주기를 재교육하는 프로세스를 구현합니다. 전체 배포 전에 프로덕션에서 모델 버전을 비교하기 위한 A/B 테스트와 같은 기법을 고려하십시오.
7. 보안 및 규정 준수
무단 액세스, 공격 및 데이터 침해로부터 배포된 모델, 데이터 및 엔드포인트를 보호하기 위한 보안 조치를 구현합니다. GDPR, HIPAA 또는 데이터 개인정보 보호 및 모델 배포와 관련된 산업별 표준과 같은 규제 요건을 준수하도록 보장합니다.
8. 문서화 및 협업
아키텍처, API, 종속성 및 구성을 포함하여 배포된 모델에 대한 자세한 문서를 유지 관리하세요. 데이터 사이언티스트, 엔지니어 및 이해관계자 간의 협업을 촉진하여 모델 개선을 반복하고, 문제를 해결하며, 실제 사용에서 얻은 피드백을 통합합니다.
결론
이제 문제 정의, 데이터 전처리, 피처 엔지니어링, 모델 선택, 교육 및 평가와 같은 주요 단계를 포함하여 구조화된 머신러닝 워크플로우의 필수 구성 요소를 알게 되었습니다.
각 단계는 머신러닝 프로젝트의 전반적인 성공에 중요한 역할을 합니다. 문제를 정확하게 정의하면 목표 솔루션을 개발하는 단계가 되며, 데이터 사전 처리는 데이터 품질과 분석 적합성을 보장합니다. 기능 엔지니어링은 데이터에서 의미 있는 정보를 추출하여 모델 성능을 향상시킵니다. 모델 선택에는 복잡성, 해석 가능성 및 성능 메트릭과 같은 요소를 기반으로 가장 적절한 알고리즘을 선택한 후 철저한 교육, 최적화 및 평가를 통해 모델 성능을 보장하는 것이 포함됩니다.
데이터 사이언티스트는 체계적인 워크플로우를 통해 효율성을 개선하고, 모델 무결성을 유지하며, 프로젝트 수명 주기 전반에 걸쳐 정보에 입각한 결정을 내릴 수 있으므로, 궁극적으로 조직과 이해관계자에게 진정한 가치를 제공하는 보다 정확하고 안정적이며 영향력 있는 머신러닝 모델로 이어집니다.
그러나 모든 머신러닝 워크플로우의 주요 과제 중 하나는 병목 현상입니다. 머신러닝 트레이닝 데이터 세트는 일반적으로 서버의 DRAM 용량을 훨씬 초과합니다. 이러한 병목현상에 대비하는 가장 좋은 방법은 AI에이리(AIRI)® 또는 FlashStack ®과 같은 AI 및 ML 지원 인프라를 통해 병목현상을 완전히 예방하는 것입니다. 퓨어스토리지가 AI 및 ML 이니셔티브를 가속화하는 방법에 대해 자세히 알아보세요.