Apple M1 또는 M2 칩이 있는 Mac을 사용하는 경우 Arm64 버전의 SDK를 설치해야 합니다.
ML.NET CLI 설치
ML.NET 명령줄 인터페이스(CLI)는 ML.NET으로 기계 학습 모델을 빌드하기 위한 도구를 제공합니다.
참고: 현재 ML.NET CLI는 미리 보기 상태이며 .NET SDK(.NET 6)의 최신 LTS 버전만 지원합니다.
설치 단계의 경우 Bash 콘솔을 사용하는 것이 좋습니다. macOS의 기본값은 zsh 콘솔이므로 새 터미널을 열고 아래 명령을 실행하여 단일 인스턴스를 만들 수 있습니다.
Command prompt
bash
X64 컴퓨터의 경우 - 다음 명령을 실행합니다.
Command prompt
dotnet tool install -g mlnet-linux-x64
ARM64 칩 아키텍처의 경우 - 대신 다음 명령을 실행합니다.
Command prompt
dotnet tool install -g mlnet-linux-arm64
도구가 성공적으로 설치되면 [arch]가 칩 아키텍처인 다음 출력 메시지가 표시되어야 합니다.
Command prompt
You can invoke the tool using the following command: mlnetTool 'mlnet-linux-[arch]' (version '16.13.9') was successfully installed.
Command prompt
dotnet tool install -g mlnet-osx-x64
ARM64 칩 아키텍처의 경우 - 대신 다음 명령을 실행합니다.
Command prompt
dotnet tool install -g mlnet-osx-arm64
도구가 성공적으로 설치되면 [arch]가 칩 아키텍처인 다음과 유사한 출력 메시지가 표시됩니다.
Command prompt
You can invoke the tool using the following command: mlnetTool 'mlnet-osx-[arch]' (version '16.14.3') was successfully installed.
참고: Bash 이외의 콘솔(예: macOS의 새로운 기본값인 zsh)을 사용하는 경우 mlnet 실행 파일을 제공해야 합니다. 권한을 부여하고 시스템 경로에 mlnet을 포함하세요. 이 작업을 수행하는 방법에 관한 지침은 mlnet(또는 모든 전역 도구)을 설치할 때 터미널에 표시됩니다. 일반적으로 chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE] 명령은 대부분 시스템에서 작동합니다.
yelp_labelled.txt의 각 행은 Yelp에서 사용자가 남긴 식당에 대한 다른 리뷰를 나타냅니다. 첫 번째 열은 사용자가 남긴 메모를 나타내고 두 번째 열은 텍스트의 감정을 나타냅니다(0은 부정, 1은 긍정). 열은 탭으로 구분되고 데이터 세트에는 머리글이 없습니다. 데이터는 다음과 같이 표시됩니다.
yelp_labelled.txt
Wow... Loved this place. 1Crust is not good. 0Not tasty and the texture was just nasty. 0
데이터 추가
Model Builder에서 로컬 파일의 데이터를 추가하거나 SQL Server 데이터베이스에 연결할 수 있습니다. 이 경우 파일에서 yelp_labelled.txt를 추가합니다.
입력 데이터 소스 유형으로 파일을 선택합니다.
yelp_labelled.txt를 찾습니다. 데이터세트를 선택하면 데이터 미리 보기 섹션에 데이터 미리 보기가 나타납니다. 데이터세트에 헤더가 없으므로 헤더가 자동 생성됩니다("col0" 및 "col1").
예측할 열(레이블)에서 "col1"을 선택합니다. 레이블은 예측하는 것으로, 이 경우 데이터 세트의 두 번째 열("col1")에 있는 감정입니다.
레이블을 예측하는 데 사용되는 열을 기능이라고 합니다. 레이블 외에 데이터 세트의 모든 열이 자동으로 기능으로 선택됩니다. 이 경우 검토 주석 열("col0")은 기능 열입니다. 기능 열을 업데이트하고 고급 데이터 옵션에서 다른 데이터 로드 옵션을 수정할 수 있지만 이 예제에서는 필요하지 않습니다.
데이터를 추가한 후 학습 단계로 이동합니다.
모델 학습
이제 yelp_labelled.txt 데이터 세트를 사용하여 모델을 학습시킵니다.
Model Builder는 최고의 성능 모델을 빌드하기 위해 주어진 학습 시간을 기반으로 다양한 알고리즘과 설정으로 많은 모델을 평가합니다.
Model Builder가 다양한 모델을 탐색하도록 하는 시간인 학습 시간을 60초로 변경합니다(학습 후 발견된 모델이 없는 경우 이 숫자를 늘릴 수 있습니다) . 더 큰 데이터 세트의 경우 훈련 시간이 더 길어집니다. Model Builder는 데이터 세트 크기에 따라 훈련 시간을 자동으로 조정합니다.
고급 학습 옵션에 사용되는 최적화 메트릭 및 알고리즘을 업데이트할 수 있지만 이 예제에서는 필요하지 않습니다.
교육 시작을 선택하여 교육 프로세스를 시작합니다. 훈련이 시작되면 남은 시간을 볼 수 있습니다.
학습 결과
학습이 완료되면 학습 결과의 요약을 볼 수 있습니다.
최고의 매크로 정확도 - Model Builder가 찾은 최고의 모델의 정확도를 보여줍니다. 정확도가 높다는 것은 모델이 테스트 데이터에서 더 정확하게 예측했다는 것을 의미합니다.
최상 모델- Model Builder의 탐색 중에 가장 잘 수행된 알고리즘을 보여줍니다.
학습 시간 - 모델을 학습/탐색하는 데 소요된 총 시간을 보여줍니다.
탐색된 모델(총)-지정된 시간 동안 Model Builder에서 탐색한 총 모델 수를 보여줍니다.
생성된 코드 숨김 - 모델을 사용하거나 새 모델을 학습시키는 데 도움이 되도록 생성된 파일의 이름을 보여 줍니다.
원하는 경우 Machine Learning 출력 창에서 교육 세션에 대한 자세한 정보를 볼 수 있습니다.
모델 사용해보기 섹션에서 샘플 입력을 예측할 수 있습니다. 텍스트 상자는 데이터 세트의 첫 번째 데이터 줄로 미리 채워져 있지만 입력을 변경하고 예측 단추를 선택하여 다른 감정 예측을 시도할 수 있습니다.
이 경우 0은 부정적인 감정을 의미하고 1은 긍정적인 감정을 의미합니다.
참고: 모델의 성능이 좋지 않으면(예: 정확도가 낮거나 모델이 '1' 값만 예측하는 경우) 시간을 더 추가하고 다시 학습을 시도할 수 있습니다. 이것은 매우 작은 데이터 세트를 사용하는 샘플입니다. 프로덕션 수준 모델의 경우 더 많은 데이터와 교육 시간을 추가하고 싶을 것입니다.
모델을 평가하고 테스트한 후 이용 단계로 이동합니다.
ML.NET CLI가 최상의 모델을 선택하면 학습 요약이 표시됩니다. 학습 요약에서는 지정된 학습 시간에 탐색된 모델 수를 포함하여 탐색 프로세스에 대한 요약을 보여 줍니다.
상위 모델
ML.NET CLI는 성능이 가장 높은 모델에 대한 코드를 생성하지만 지정된 탐색 시간에 발견된 가장 높은 정확도로 상위 모델(최대 5개)도 표시합니다. AUC, AUPRC 및 F1 점수를 포함하여 상위 모델에 대한 여러 평가 메트릭을 표시합니다. 자세한 내용은 ML.NET 메트릭을 참조하세요.
코드 생성
학습이 완료되면 네 개의 파일이 SentimentModel.mbconfig에 코드 숨김으로 자동으로 추가됩니다.
SentimentModel.consumption.cs: 이 파일에는 모델 사용에 사용할 수 있는 모델 입력 및 출력 클래스와 Predict 메서드가 포함되어 있습니다.
SentimentModel.evaluate.cs: 이 파일에는 모델 사용에 사용할 수 있는 모델 입력 및 출력 클래스와 Predict 메서드가 포함되어 있습니다.
SentimentModel.mlnet: 이 파일은 직렬화된 zip 파일인 학습된 ML.NET 모델입니다.
SentimentModel.training.cs: 이 파일에는 모델 예측에 대한 입력 열의 중요도를 이해하는 코드가 포함되어 있습니다.
Model Builder 사용 단계에서는 모델에 대한 샘플 입력을 만들고 모델을 사용하여 해당 입력을 예측하는 코드 조각이 제공됩니다.
Model Builder는 또한 솔루션에 선택적으로 추가할 수 있는 프로젝트 템플릿을 제공합니다. 두 가지 프로젝트 템플릿(콘솔 앱과 웹 API)이 있으며 둘 다 훈련된 모델을 사용합니다.
ML.NET CLI는 기계 학습 모델과 다음을 포함하는 모델 학습 및 사용을 위한 코드를 모두 추가합니다.
다음 파일을 포함하는 .NET 콘솔 앱이 포함된 SentimentModel이라는 새 디렉터리가 만들어집니다.
Program.cs: 이 파일에는 모델을 실행하는 코드가 포함되어 있습니다.
SentimentModel.consumption.cs: 이 파일에는 모델 사용에 사용할 수 있는 모델 입력 및 출력 클래스와 Predict 메서드가 포함되어 있습니다.
SentimentModel.mbconfig: 이 파일은 훈련의 구성과 결과를 추적하는 JSON 파일입니다.
SentimentModel.training.cs: 이 파일에는 최종 모델을 학습시키는 데 사용되는 학습 파이프라인(데이터 변환, 알고리즘 및 알고리즘 매개 변수)이 포함되어 있습니다.
SentimentModel.zip: 이 파일은 직렬화된 zip 파일인 학습된 ML.NET 모델입니다.
모델을 시도하려면 콘솔 앱을 실행하여 모델을 사용하여 단일 문의 감정을 예측할 수 있습니다.
모델 사용
마지막 단계는 최종 사용자 애플리케이션에서 학습된 모델을 사용하는 것입니다.
myMLApp 프로젝트의 Program.cs 코드를 다음 코드로 바꿉니다.
Program.cs
using MyMLApp;// Add input datavar sampleData = new SentimentModel.ModelInput()
{ Col0 = "This restaurant was wonderful."};// Load model and predict output of sample datavar result = SentimentModel.Predict(sampleData);// If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative"var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative";Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
myMLApp을 실행합니다(Ctrl+F5 또는 디버그 > 디버깅하지 않고 시작 선택). 입력 문이 양수인지 음수인지 예측하는 다음 출력이 표시되어야 합니다.
ML.NET CLI가 학습된 모델과 코드를 생성했으므로 이제 다음 단계에 따라 .NET 애플리케이션(예: SentimentModel 콘솔 앱)에서 모델을 사용할 수 있습니다.
명령줄에서 consumeModelApp 디렉터리로 이동합니다.
Command prompt
cd SentimentModel
코드 편집기에서 Program.cs를 열고 코드를 검사합니다. 코드는 다음과 유사해야 합니다.
Program.cs
using System;namespace SentimentModel.ConsoleApp{ class Program { static void Main(string[] args) { // Add input data SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput() { Col0 = @"Wow... Loved this place." }; // Make a single prediction on the sample data and print results
var predictionResult = SentimentModel.Predict(sampleData); Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n"); Console.WriteLine($"Col0: @{"Wow... Loved this place."}"); Console.WriteLine($"Col1: {1F}"); Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n"); Console.WriteLine("=============== End of process, hit any key to finish ==============="); Console.ReadKey(); } }}
SentimentModel.ConsoleApp을 실행합니다. 터미널에서 다음 명령을 실행하여 이를 수행할 수 있습니다(SentimentModel 디렉터리에 있는지 확인).
Command prompt
dotnet run
출력은 다음과 같이 표시되어야 합니다.
Command prompt
Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...Col0: Wow... Loved this place.Col1: 1Predicted Col1: 1=============== End of process, hit any key to finish ===============
다음 단계
축하합니다. ML.NET Model Builder를 사용하여 첫 번째 기계 학습 모델을 만들었습니다!
이제 기본 사항을 배웠으므로 Microsoft Learn의 자가 학습 모듈로 계속 진행합니다. 여기에서 센서 데이터를 사용하여 제조 장치가 고장났는지 여부를 감지할 수 있습니다.