Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Các mô hình AI sáng tạo dành cho người đồng hành mã hóa hầu hết được đào tạo về mã nguồn có sẵn công khai và văn bản ngôn ngữ tự nhiên. Mặc dù kích thước lớn của kho dữ liệu đào tạo cho phép các mô hình tạo mã cho chức năng thường được sử dụng, nhưng các mô hình này không biết mã trong các kho riêng và các kiểu mã hóa liên quan được thực thi khi phát triển cùng với chúng. Do đó, các đề xuất được tạo ra có thể yêu cầu viết lại trước khi chúng phù hợp để đưa vào kho lưu trữ nội bộ.

Chúng tôi có thể giải quyết khoảng trống này và giảm thiểu việc chỉnh sửa thủ công bổ sung bằng cách nhúng kiến ​​thức mã từ các kho lưu trữ riêng tư lên trên mô hình ngôn ngữ được đào tạo về mã công khai. Đây là lý do tại sao chúng tôi đã phát triển khả năng tùy chỉnh cho Mã Amazon. Trong bài đăng này, chúng tôi chỉ cho bạn hai cách có thể tùy chỉnh đồng hành mã hóa bằng cách sử dụng tính năng tạo và tinh chỉnh tăng cường truy xuất.

Mục tiêu của chúng tôi với khả năng tùy chỉnh CodeWhisperer là cho phép các tổ chức điều chỉnh mô hình CodeWhisperer bằng cách sử dụng các kho và thư viện riêng của họ để tạo các đề xuất mã dành riêng cho tổ chức nhằm tiết kiệm thời gian, tuân theo phong cách và quy ước của tổ chức, đồng thời tránh các lỗi hoặc lỗ hổng bảo mật. Điều này mang lại lợi ích cho việc phát triển phần mềm doanh nghiệp và giúp vượt qua những thách thức sau:

  1. Tài liệu hoặc thông tin thưa thớt dành cho các thư viện và API nội bộ buộc nhà phát triển phải dành thời gian kiểm tra mã đã viết trước đó để tái tạo cách sử dụng.
  2. Thiếu nhận thức và tính nhất quán trong việc triển khai các phương pháp, phong cách và mẫu mã hóa dành riêng cho doanh nghiệp.
  3. Nhà phát triển vô tình sử dụng mã và API không được dùng nữa.

Bằng cách sử dụng kho lưu trữ mã nội bộ để đào tạo bổ sung đã trải qua quá trình đánh giá mã, mô hình ngôn ngữ có thể hiển thị việc sử dụng các API nội bộ và các khối mã giúp khắc phục danh sách các vấn đề trước đó. Vì mã tham chiếu đã được xem xét và đáp ứng tiêu chuẩn cao của khách hàng nên khả năng phát sinh lỗi hoặc lỗ hổng bảo mật cũng được giảm thiểu. Và bằng cách lựa chọn cẩn thận các tệp nguồn được sử dụng để tùy chỉnh, các tổ chức có thể giảm việc sử dụng mã không được dùng nữa.

Những thách thức về thiết kế

Việc tùy chỉnh đề xuất mã dựa trên kho riêng của tổ chức có nhiều thách thức thiết kế thú vị. Việc triển khai các mô hình ngôn ngữ lớn (LLM) cho các đề xuất mã bề mặt có chi phí cố định về tính khả dụng và chi phí biến đổi do suy luận dựa trên số lượng mã thông báo được tạo. Do đó, việc có các tùy chỉnh riêng cho từng khách hàng và lưu trữ chúng riêng lẻ, do đó phát sinh thêm chi phí cố định, có thể rất tốn kém. Mặt khác, việc có nhiều tùy chỉnh đồng thời trên cùng một hệ thống đòi hỏi phải có cơ sở hạ tầng nhiều bên thuê để tách biệt mã độc quyền cho từng khách hàng. Hơn nữa, khả năng tùy chỉnh sẽ hiển thị các nút bấm để cho phép lựa chọn tập hợp con đào tạo phù hợp từ kho lưu trữ nội bộ bằng cách sử dụng các số liệu khác nhau (ví dụ: các tệp có lịch sử ít lỗi hơn hoặc mã được đưa vào kho gần đây). Bằng cách chọn mã dựa trên các số liệu này, việc tùy chỉnh có thể được đào tạo bằng cách sử dụng mã chất lượng cao hơn để có thể cải thiện chất lượng đề xuất mã. Cuối cùng, ngay cả khi các kho lưu trữ mã liên tục phát triển, chi phí liên quan đến việc tùy chỉnh sẽ ở mức tối thiểu để giúp doanh nghiệp tiết kiệm chi phí nhờ tăng năng suất của nhà phát triển.

Cách tiếp cận cơ bản để tùy chỉnh tòa nhà có thể là huấn luyện trước mô hình trên một kho dữ liệu đào tạo duy nhất bao gồm tập dữ liệu huấn luyện trước (công khai) hiện có cùng với mã doanh nghiệp (riêng tư). Mặc dù phương pháp này hoạt động trên thực tế nhưng nó yêu cầu đào tạo trước (dư thừa) từng cá nhân bằng cách sử dụng tập dữ liệu công khai cho mỗi doanh nghiệp. Nó cũng đòi hỏi chi phí triển khai dư thừa liên quan đến việc lưu trữ một mô hình tùy chỉnh cho từng khách hàng chỉ phục vụ các yêu cầu của khách hàng bắt nguồn từ khách hàng đó. Bằng cách tách rời việc đào tạo mã công khai và mã riêng cũng như triển khai tùy chỉnh trên hệ thống nhiều người thuê, những chi phí dư thừa này có thể tránh được.

Cách tùy chỉnh

Ở mức độ cao, có hai loại kỹ thuật tùy chỉnh có thể có: tạo tăng cường truy xuất (RAG) và tinh chỉnh (FT).

  • Thế hệ tăng cường truy xuất: RAG tìm thấy các đoạn mã phù hợp trong kho lưu trữ tương tự như một đoạn mã nhất định (ví dụ: mã ngay trước con trỏ trong IDE) và tăng cường lời nhắc được sử dụng để truy vấn LLM bằng các đoạn mã phù hợp này. Điều này làm phong phú thêm lời nhắc nhằm giúp thúc đẩy mô hình tạo ra mã phù hợp hơn. Có một số kỹ thuật được khám phá trong tài liệu theo hướng này. Nhìn thấy Thế hệ tăng cường truy xuất cho các nhiệm vụ NLP chuyên sâu về kiến ​​thức, THẬT, kNN-LMRETRO.

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

  • Tinh chỉnh: FT sử dụng LLM được đào tạo trước và đào tạo thêm về cơ sở mã cụ thể, nhỏ hơn (so với tập dữ liệu đào tạo trước) để điều chỉnh nó cho phù hợp với kho lưu trữ thích hợp. Tinh chỉnh sẽ điều chỉnh trọng số của LLM dựa trên khóa đào tạo này, làm cho nó phù hợp hơn với nhu cầu riêng của tổ chức.

Cả RAG và tinh chỉnh đều là những công cụ mạnh mẽ để nâng cao hiệu suất tùy chỉnh dựa trên LLM. RAG có thể nhanh chóng thích ứng với các thư viện hoặc API riêng với độ phức tạp và chi phí đào tạo thấp hơn. Tuy nhiên, việc tìm kiếm và bổ sung các đoạn mã được truy xuất vào dấu nhắc sẽ làm tăng độ trễ khi chạy. Thay vào đó, việc tinh chỉnh không yêu cầu bất kỳ sự bổ sung nào về ngữ cảnh vì mô hình đã được đào tạo trên các thư viện và API riêng. Tuy nhiên, nó dẫn đến chi phí đào tạo cao hơn và sự phức tạp trong việc phục vụ mô hình, khi nhiều mô hình tùy chỉnh phải được hỗ trợ trên nhiều khách hàng doanh nghiệp. Như chúng ta sẽ thảo luận sau, những lo ngại này có thể được khắc phục bằng cách tối ưu hóa phương pháp tiếp cận hơn nữa.

Thế hệ tăng cường truy xuất

Có một số bước liên quan đến RAG:

Lập chỉ mục

Được quản trị viên cung cấp một kho lưu trữ riêng làm đầu vào, một chỉ mục được tạo bằng cách chia các tệp mã nguồn thành các phần. Nói một cách đơn giản, chunking biến các đoạn mã thành các đoạn dễ hiểu, có khả năng mang lại nhiều thông tin nhất cho mô hình và dễ dàng truy xuất theo ngữ cảnh. Kích thước của một đoạn và cách trích xuất nó từ một tệp là những lựa chọn thiết kế ảnh hưởng đến kết quả cuối cùng. Ví dụ: các khối có thể được phân chia dựa trên dòng mã hoặc dựa trên các khối cú pháp, v.v.

Quy trình làm việc của quản trị viên

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.
Tìm kiếm theo ngữ cảnh

Tìm kiếm một tập hợp các đoạn mã được lập chỉ mục dựa trên một vài dòng mã phía trên con trỏ và truy xuất các đoạn mã có liên quan. Việc truy xuất này có thể xảy ra bằng các thuật toán khác nhau. Những lựa chọn này có thể bao gồm:

  • Túi từ (BM25) Hàm truy xuất túi từ xếp hạng một tập hợp các đoạn mã dựa trên tần suất thuật ngữ truy vấn và độ dài đoạn mã.

Truy xuất dựa trên BM25

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Hình dưới đây minh họa cách hoạt động của BM25. Để sử dụng BM25, trước tiên phải xây dựng chỉ mục đảo ngược. Đây là cấu trúc dữ liệu ánh xạ các cụm từ khác nhau tới các đoạn mã chứa các cụm từ đó. Tại thời điểm tìm kiếm, chúng tôi tra cứu các đoạn mã dựa trên các cụm từ có trong truy vấn và tính điểm chúng dựa trên tần suất.

Truy xuất ngữ nghĩa

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

BM25 tập trung vào việc kết hợp từ vựng. Do đó, việc thay thế “thêm” bằng “xóa” có thể không thay đổi điểm BM25 dựa trên các thuật ngữ trong truy vấn nhưng chức năng truy xuất có thể trái ngược với những gì được yêu cầu. Ngược lại, việc truy xuất ngữ nghĩa tập trung vào chức năng của đoạn mã mặc dù tên biến và tên API có thể khác nhau. Thông thường, sự kết hợp giữa BM25 và truy xuất ngữ nghĩa có thể phối hợp tốt với nhau để mang lại kết quả tốt hơn.

suy luận tăng cường

Khi các nhà phát triển viết mã, chương trình hiện có của họ sẽ được sử dụng để tạo một truy vấn được gửi đến chỉ mục truy xuất. Sau khi truy xuất nhiều đoạn mã bằng một trong các kỹ thuật đã thảo luận ở trên, chúng tôi sẽ thêm chúng vào dấu nhắc ban đầu. Có nhiều lựa chọn thiết kế ở đây, bao gồm số lượng đoạn mã cần truy xuất, vị trí tương đối của đoạn mã trong lời nhắc và kích thước của đoạn mã. Lựa chọn thiết kế cuối cùng chủ yếu được thúc đẩy bởi quan sát thực nghiệm bằng cách khám phá các cách tiếp cận khác nhau với mô hình ngôn ngữ cơ bản và đóng vai trò chính trong việc xác định tính chính xác của phương pháp này. Nội dung từ các đoạn được trả về và mã gốc được kết hợp và gửi đến mô hình để nhận các đề xuất mã tùy chỉnh.

Quy trình làm việc của nhà phát triển

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Tinh chỉnh:

Tinh chỉnh một mô hình ngôn ngữ được thực hiện cho học chuyển trong đó trọng số của mô hình được huấn luyện trước được huấn luyện trên dữ liệu mới. Mục tiêu là giữ lại kiến ​​thức thích hợp từ một mô hình đã được đào tạo trên một kho văn bản lớn và tinh chỉnh, thay thế hoặc bổ sung kiến ​​thức mới từ kho văn bản mới - trong trường hợp của chúng tôi là một cơ sở mã mới. Chỉ cần đào tạo về một cơ sở mã mới sẽ dẫn đến quên thảm khốc. Ví dụ, mô hình ngôn ngữ có thể “quên” kiến ​​thức về an toàn hoặc các API được sử dụng thưa thớt trong cơ sở mã doanh nghiệp cho đến nay. Có nhiều kỹ thuật khác nhau như trải nghiệm chơi lại, GEMPP-TF được sử dụng để giải quyết thách thức này.

Tinh chỉnh

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Có hai cách tinh chỉnh. Một cách tiếp cận là sử dụng dữ liệu bổ sung mà không cần tăng thêm lời nhắc để tinh chỉnh mô hình. Một cách tiếp cận khác là tăng cường lời nhắc trong quá trình tinh chỉnh bằng cách truy xuất các đề xuất mã có liên quan. Điều này giúp cải thiện khả năng của mô hình trong việc cung cấp các đề xuất tốt hơn khi có các đoạn mã được truy xuất. Sau đó, mô hình sẽ được đánh giá trên một tập hợp các ví dụ đã có sẵn sau khi được huấn luyện. Sau đó, mô hình tùy chỉnh sẽ được triển khai và sử dụng để tạo các đề xuất mã.

Bất chấp những lợi thế của việc sử dụng LLM chuyên dụng để tạo mã trên các kho riêng, chi phí có thể rất cao đối với các tổ chức vừa và nhỏ. Điều này là do tài nguyên điện toán chuyên dụng là cần thiết mặc dù chúng có thể không được sử dụng đúng mức do quy mô của các nhóm. Một cách để đạt được hiệu quả chi phí là phục vụ nhiều mô hình trên cùng một điện toán (ví dụ: SageMaker nhiều người thuê). Tuy nhiên, các mô hình ngôn ngữ yêu cầu một hoặc nhiều GPU chuyên dụng trên nhiều vùng để xử lý các hạn chế về độ trễ và thông lượng. Do đó, việc thuê nhiều mô hình lưu trữ đầy đủ trên mỗi GPU là không khả thi.

Chúng tôi có thể khắc phục vấn đề này bằng cách phục vụ nhiều khách hàng trên cùng một máy tính bằng cách sử dụng nhỏ adapter tới LLM. Các kỹ thuật tinh chỉnh tham số hiệu quả (PEFT) như điều chỉnh nhanh chóng, điều chỉnh tiền tốvà Thích ứng Cấp thấp (LoRA) được sử dụng để giảm chi phí đào tạo mà không làm giảm độ chính xác. Đặc biệt, LoRA đã đạt được thành công lớn trong việc đạt được độ chính xác tương tự (hoặc tốt hơn) so với tinh chỉnh mô hình đầy đủ. Ý tưởng cơ bản là thiết kế một ma trận cấp thấp sau đó được thêm vào các ma trận với trọng số ma trận ban đầu của các lớp mục tiêu của mô hình. Thông thường, các bộ điều hợp này sau đó được hợp nhất với trọng số mô hình ban đầu để phân phối. Điều này dẫn đến kích thước và kiến ​​trúc giống như mạng lưới thần kinh ban đầu. Giữ các bộ điều hợp riêng biệt, chúng tôi có thể phục vụ cùng một mô hình cơ sở với nhiều bộ điều hợp mô hình. Điều này mang lại lợi thế kinh tế theo quy mô cho các khách hàng vừa và nhỏ của chúng tôi.

Thích ứng cấp thấp (LoRA)

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Đo lường hiệu quả tùy chỉnh

Chúng tôi cần các số liệu đánh giá để đánh giá hiệu quả của giải pháp tùy chỉnh. Các số liệu đánh giá ngoại tuyến đóng vai trò là rào cản chống lại các tùy chỉnh vận chuyển dưới mức trung bình so với mô hình mặc định. Bằng cách xây dựng các tập dữ liệu từ tập dữ liệu có sẵn từ kho lưu trữ được cung cấp, phương pháp tùy chỉnh có thể được áp dụng cho tập dữ liệu này để đo lường hiệu quả. So sánh mã nguồn hiện có với đề xuất mã tùy chỉnh sẽ định lượng mức độ hữu ích của việc tùy chỉnh. Các biện pháp phổ biến được sử dụng để định lượng này bao gồm các số liệu như chỉnh sửa sự tương đồng, khớp chính xác và MãBLEU.

Cũng có thể đo lường mức độ hữu ích bằng cách định lượng tần suất các API nội bộ được gọi bằng tùy chỉnh và so sánh nó với các lệnh gọi trong nguồn có sẵn. Tất nhiên, việc làm đúng cả hai khía cạnh là điều quan trọng để hoàn thành thành công. Đối với phương pháp tùy chỉnh của mình, chúng tôi đã thiết kế một chỉ số được thiết kế riêng được gọi là Chỉ số chất lượng tùy chỉnh (CQI), một thước đo duy nhất thân thiện với người dùng nằm trong khoảng từ 1 đến 10. Chỉ số CQI cho thấy mức độ hữu ích của các đề xuất từ ​​mô hình tùy chỉnh so với mã đề xuất với một mô hình công cộng chung.

Tổng kết

Chúng tôi đã xây dựng khả năng tùy chỉnh Amazon CodeWhisperer dựa trên sự kết hợp của các kỹ thuật kỹ thuật hàng đầu được thảo luận trong bài đăng trên blog này và đánh giá khả năng này bằng các nghiên cứu của người dùng về năng suất của nhà phát triển do Persistent Systems thực hiện. Trong hai nghiên cứu này do AWS ủy quyền, các nhà phát triển được yêu cầu tạo một ứng dụng phần mềm y tế bằng Java yêu cầu sử dụng thư viện nội bộ của họ. Trong nghiên cứu đầu tiên, các nhà phát triển không có quyền truy cập vào CodeWhisperer mất (trung bình) ~ 8.2 giờ để hoàn thành nhiệm vụ, trong khi những người sử dụng CodeWhisperer (không tùy chỉnh) đã hoàn thành nhiệm vụ nhanh hơn 62% trong (trung bình) ~ 3.1 giờ.

Trong nghiên cứu thứ hai với một nhóm thuần tập nhà phát triển khác, các nhà phát triển sử dụng CodeWhisperer đã được tùy chỉnh bằng cơ sở mã riêng của họ đã hoàn thành nhiệm vụ trong trung bình 2.5 giờ, nhanh hơn 28% so với những người sử dụng CodeWhisperer mà không tùy chỉnh và hoàn thành nhiệm vụ trong ~3.5 giờ. trung bình hàng giờ. Chúng tôi thực sự tin rằng các công cụ như CodeWhisperer được tùy chỉnh cho cơ sở mã của bạn đóng vai trò quan trọng trong việc nâng cao hơn nữa năng suất của nhà phát triển và khuyên bạn nên chạy thử. Để biết thêm thông tin và để bắt đầu, hãy truy cập Trang Amazon CodeWhisperer.


Giới thiệu về tác giả

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Thanh Tôn là Nhà khoa học ứng dụng cấp cao trong Phòng thí nghiệm AI của AWS và làm việc trên AWS CodeWhisperer, một trợ lý mã hóa có tính sáng tạo được hỗ trợ bởi AI. Mối quan tâm nghiên cứu của cô nằm ở Xử lý ngôn ngữ tự nhiên, AI4Code và AI tổng quát. Trước đây, cô đã từng làm việc trên một số dịch vụ dựa trên NLP như Comprehend Medical, hệ thống chẩn đoán y tế tại Amazon Health AI và hệ thống Machine Translation tại Meta AI. Cô nhận bằng Tiến sĩ tại Virginia Tech vào năm 2017.

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Arash Farahani là Nhà khoa học ứng dụng của Amazon CodeWhisperer. Mối quan tâm hiện tại của anh ấy là về AI, tìm kiếm và cá nhân hóa. Arash đam mê xây dựng các giải pháp giải quyết những điểm khó khăn của nhà phát triển. Anh ấy đã làm việc trên nhiều tính năng trong CodeWhisperer và giới thiệu các giải pháp NLP vào nhiều quy trình làm việc nội bộ khác nhau dành cho tất cả các nhà phát triển Amazon. Ông nhận bằng Tiến sĩ tại Đại học Illinois tại Urbana-Champaign vào năm 2017.

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Mã Tiểu Phi là Giám đốc khoa học ứng dụng tại Phòng thí nghiệm AI của AWS. Anh gia nhập Amazon vào năm 2016 với tư cách là Nhà khoa học ứng dụng trong tổ chức SCOT và sau đó là AWS AI Labs vào năm 2018, làm việc trên Amazon Kendra. Xiaofei hiện đang giữ chức vụ quản lý khoa học cho một số dịch vụ bao gồm Kendra, Contact Lens và gần đây nhất là CodeWhisperer và CodeGuru Security. Mối quan tâm nghiên cứu của ông nằm trong lĩnh vực AI4Code và Xử lý ngôn ngữ tự nhiên. Ông nhận bằng Tiến sĩ tại Đại học Maryland, College Park vào năm 2010.

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Murali Krishna Ramanathan là Nhà khoa học ứng dụng chính trong Phòng thí nghiệm AI của AWS và đồng lãnh đạo AWS CodeWhisperer, một người bạn đồng hành mã hóa dựa trên AI. Anh ấy đam mê xây dựng các công cụ phần mềm và quy trình làm việc giúp cải thiện năng suất của nhà phát triển. Trước đây, ông đã xây dựng Piranha, một công cụ tái cấu trúc tự động để xóa mã do các cờ tính năng cũ và dẫn dắt các sáng kiến ​​về chất lượng mã tại bộ phận kỹ thuật của Uber. Ông là người nhận được giải thưởng của khoa Google (2015), giải thưởng bài báo xuất sắc của ACM SIGSOFT (ISSTA 2016) và giải thưởng Maurice Halstead (Purdue 2006). Ông nhận bằng Tiến sĩ Khoa học Máy tính tại Đại học Purdue năm 2008.

Tùy chỉnh đồng hành mã hóa cho các tổ chức | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Ramesh Nallapati là Nhà khoa học ứng dụng chính cấp cao trong Phòng thí nghiệm AI của AWS và đồng lãnh đạo CodeWhisperer, một người bạn đồng hành mã hóa dựa trên AI tổng quát và Mô hình ngôn ngữ lớn Titan tại AWS. Mối quan tâm của anh chủ yếu là trong lĩnh vực Xử lý ngôn ngữ tự nhiên và AI sáng tạo. Trước đây, Ramesh đã dẫn đầu về mặt khoa học trong việc cung cấp nhiều sản phẩm AWS dựa trên NLP như Kendra, Quicksight Q và Contact Lens. Ông giữ các vị trí nghiên cứu tại Stanford, CMU và IBM Research, đồng thời nhận bằng Tiến sĩ. về Khoa học Máy tính tại Đại học Massachusetts Amherst năm 2006.

Dấu thời gian:

Thêm từ Học máy AWS