dotnet / machinelearning

ML.NET is an open source and cross-platform machine learning framework for .NET.
https://dot.net/ml
MIT License
9.05k stars 1.88k forks source link

[GenAI] Introduce CausalLMPipelineChatClient for MEAI.IChatClient #7270

Closed LittleLittleCloud closed 2 weeks ago

LittleLittleCloud commented 1 month ago

We are excited to review your PR.

So we can do the best job, please check:

This PR implements CausalLMPipelineChatClient<TTokenizer, TCausalLMModel> class for MEAI.IChatClient's intergration.

This PR also refactors the AutoGen and semantic kernel intergretion for Phi3, which pulls out the prompt template parts into an individual Phi3ChatTemplateBuilder class.

This PR also update STJ to 8.0.5 to address a security warning for that package

The CausalLMPipelineChatClient is used as the abstract class for all IChatClient implementation in GenAI models. For now, the following implementations are available

The MistralCausalLMChatClient will come in the following PR with additional support for tool call.

Usage

Checkout the MEAI folder under Microsoft.ML.GenAI.Samples` for examples. The following examples are added

codecov[bot] commented 1 month ago

Codecov Report

Attention: Patch coverage is 33.33333% with 152 lines in your changes missing coverage. Please review.

Project coverage is 68.84%. Comparing base (823fc17) to head (c5b9603). Report is 10 commits behind head on main.

Files with missing lines Patch % Lines
...rosoft.ML.GenAI.Core/CausalLMPipelineChatClient.cs 0.00% 48 Missing :warning:
...osoft.ML.GenAI.Phi/Phi3/Phi3ChatTemplateBuilder.cs 43.83% 35 Missing and 6 partials :warning:
...crosoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs 0.00% 24 Missing :warning:
...rosoft.ML.GenAI.Phi/Phi3/Phi3CausalLMChatClient.cs 0.00% 24 Missing :warning:
...soft.ML.GenAI.LLaMA/Llama3_1ChatTemplateBuilder.cs 69.23% 5 Missing and 3 partials :warning:
...c/Microsoft.ML.GenAI.Phi/Phi3/Phi3CausalLMAgent.cs 60.00% 6 Missing :warning:
...enAI.Phi/Phi3/Phi3CausalLMChatCompletionService.cs 83.33% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #7270 +/- ## ========================================== + Coverage 68.81% 68.84% +0.03% ========================================== Files 1461 1471 +10 Lines 272405 274124 +1719 Branches 28176 28411 +235 ========================================== + Hits 187442 188734 +1292 - Misses 77727 78079 +352 - Partials 7236 7311 +75 ``` | [Flag](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet) | Coverage Δ | | |---|---|---| | [Debug](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet) | `68.84% <33.33%> (+0.03%)` | :arrow_up: | | [production](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet) | `63.30% <30.27%> (-0.01%)` | :arrow_down: | | [test](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet) | `89.18% <100.00%> (+0.10%)` | :arrow_up: | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#carryforward-flags-in-the-pull-request-comment) to find out more. | [Files with missing lines](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet) | Coverage Δ | | |---|---|---| | [...enAI.Phi/Phi3/Phi3CausalLMTextGenerationService.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.Phi%2FPhi3%2FPhi3CausalLMTextGenerationService.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5QaGkvUGhpMy9QaGkzQ2F1c2FsTE1UZXh0R2VuZXJhdGlvblNlcnZpY2UuY3M=) | `35.71% <100.00%> (+1.56%)` | :arrow_up: | | [...st/Microsoft.ML.GenAI.LLaMA.Tests/LLaMA3\_1Tests.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=test%2FMicrosoft.ML.GenAI.LLaMA.Tests%2FLLaMA3_1Tests.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-dGVzdC9NaWNyb3NvZnQuTUwuR2VuQUkuTExhTUEuVGVzdHMvTExhTUEzXzFUZXN0cy5jcw==) | `94.73% <100.00%> (+0.79%)` | :arrow_up: | | [...enAI.Phi/Phi3/Phi3CausalLMChatCompletionService.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.Phi%2FPhi3%2FPhi3CausalLMChatCompletionService.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5QaGkvUGhpMy9QaGkzQ2F1c2FsTE1DaGF0Q29tcGxldGlvblNlcnZpY2UuY3M=) | `61.90% <83.33%> (-3.10%)` | :arrow_down: | | [...c/Microsoft.ML.GenAI.Phi/Phi3/Phi3CausalLMAgent.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.Phi%2FPhi3%2FPhi3CausalLMAgent.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5QaGkvUGhpMy9QaGkzQ2F1c2FsTE1BZ2VudC5jcw==) | `52.00% <60.00%> (-4.72%)` | :arrow_down: | | [...soft.ML.GenAI.LLaMA/Llama3\_1ChatTemplateBuilder.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.LLaMA%2FLlama3_1ChatTemplateBuilder.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5MTGFNQS9MbGFtYTNfMUNoYXRUZW1wbGF0ZUJ1aWxkZXIuY3M=) | `68.83% <69.23%> (+0.20%)` | :arrow_up: | | [...crosoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.LLaMA%2FLlama3CausalLMChatClient.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5MTGFNQS9MbGFtYTNDYXVzYWxMTUNoYXRDbGllbnQuY3M=) | `0.00% <0.00%> (ø)` | | | [...rosoft.ML.GenAI.Phi/Phi3/Phi3CausalLMChatClient.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.Phi%2FPhi3%2FPhi3CausalLMChatClient.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5QaGkvUGhpMy9QaGkzQ2F1c2FsTE1DaGF0Q2xpZW50LmNz) | `0.00% <0.00%> (ø)` | | | [...osoft.ML.GenAI.Phi/Phi3/Phi3ChatTemplateBuilder.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.Phi%2FPhi3%2FPhi3ChatTemplateBuilder.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5QaGkvUGhpMy9QaGkzQ2hhdFRlbXBsYXRlQnVpbGRlci5jcw==) | `43.83% <43.83%> (ø)` | | | [...rosoft.ML.GenAI.Core/CausalLMPipelineChatClient.cs](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270?src=pr&el=tree&filepath=src%2FMicrosoft.ML.GenAI.Core%2FCausalLMPipelineChatClient.cs&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet#diff-c3JjL01pY3Jvc29mdC5NTC5HZW5BSS5Db3JlL0NhdXNhbExNUGlwZWxpbmVDaGF0Q2xpZW50LmNz) | `0.00% <0.00%> (ø)` | | ... and [29 files with indirect coverage changes](https://app.codecov.io/gh/dotnet/machinelearning/pull/7270/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dotnet)
michaelgsharp commented 2 weeks ago

/azp run

azure-pipelines[bot] commented 2 weeks ago
Azure Pipelines successfully started running 2 pipeline(s).
michaelgsharp commented 1 week ago

/backport to release/4.0

github-actions[bot] commented 1 week ago

Started backporting to release/4.0: https://github.com/dotnet/machinelearning/actions/runs/11749726947

github-actions[bot] commented 1 week ago

@michaelgsharp backporting to release/4.0 failed, the patch most likely resulted in conflicts:

$ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch

Applying: leverage MEAI abstraction
Applying: Update src/Microsoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs
Applying: Update src/Microsoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs
Applying: Update src/Microsoft.ML.GenAI.Phi/Phi3/Phi3CausalLMChatClient.cs
Applying: fix comments
Using index info to reconstruct a base tree...
M   src/Microsoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs
M   src/Microsoft.ML.GenAI.Phi/Phi3/Phi3CausalLMChatClient.cs
Falling back to patching base and 3-way merge...
Auto-merging src/Microsoft.ML.GenAI.Phi/Phi3/Phi3CausalLMChatClient.cs
Auto-merging src/Microsoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs
CONFLICT (content): Merge conflict in src/Microsoft.ML.GenAI.LLaMA/Llama3CausalLMChatClient.cs
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config advice.mergeConflict false"
Patch failed at 0005 fix comments
Error: The process '/usr/bin/git' failed with exit code 128

Please backport manually!

github-actions[bot] commented 1 week ago

@michaelgsharp an error occurred while backporting to release/4.0, please check the run log for details!

Error: git am failed, most likely due to a merge conflict.