Đối với các nhà khoa học dữ liệu, việc di chuyển các mô hình máy học (ML) từ bằng chứng về khái niệm sang sản xuất thường là một thách thức đáng kể. Một trong những thách thức chính có thể là triển khai một mô hình được đào tạo cục bộ, hoạt động tốt lên đám mây để suy luận và sử dụng trong các ứng dụng khác. Việc quản lý quy trình có thể phức tạp, nhưng với công cụ phù hợp, bạn có thể giảm đáng kể nỗ lực cần thiết.
Suy luận của Amazon SageMaker, được cung cấp rộng rãi vào tháng 2022 năm XNUMX, giúp bạn dễ dàng triển khai các mô hình ML vào sản xuất để đưa ra dự đoán trên quy mô lớn, cung cấp nhiều lựa chọn cơ sở hạ tầng ML và các tùy chọn triển khai mô hình để giúp đáp ứng mọi loại nhu cầu suy luận ML. Bạn có thể dùng Điểm cuối suy luận không có máy chủ của SageMaker dành cho khối lượng công việc có thời gian nhàn rỗi giữa các lần tăng lưu lượng truy cập và có thể chịu được khởi động nguội. Các điểm cuối tự động mở rộng quy mô dựa trên lưu lượng truy cập và loại bỏ công việc nặng nhọc không phân biệt của việc lựa chọn và quản lý máy chủ. Ngoài ra, bạn có thể sử dụng AWS Lambda trực tiếp để hiển thị các mô hình của bạn và triển khai các ứng dụng ML của bạn bằng cách sử dụng khung nguồn mở ưa thích của bạn, khung này có thể chứng tỏ là linh hoạt và tiết kiệm chi phí hơn.
API nhanh là một khung web hiện đại, hiệu suất cao để xây dựng API bằng Python. Nó nổi bật khi phát triển các ứng dụng không có máy chủ với các dịch vụ siêu nhỏ RESTful và các trường hợp sử dụng yêu cầu suy luận ML trên quy mô lớn trong nhiều ngành. Các chức năng tích hợp và dễ sử dụng của nó như tài liệu API tự động khiến nó trở thành lựa chọn phổ biến của các kỹ sư ML để triển khai các API suy luận hiệu suất cao. Bạn có thể xác định và sắp xếp các tuyến đường của mình bằng cách sử dụng các chức năng có sẵn từ FastAPI để mở rộng quy mô và xử lý logic kinh doanh đang phát triển khi cần, thử nghiệm cục bộ và lưu trữ tuyến đường đó trên Lambda, sau đó hiển thị tuyến đường đó qua một cổng API duy nhất, cho phép bạn mang khung web mã nguồn mở đến Lambda mà không cần nâng cấp hay tái cấu trúc mã của bạn.
Bài đăng này chỉ cho bạn cách dễ dàng triển khai và chạy suy luận ML không có máy chủ bằng cách hiển thị mô hình ML của bạn dưới dạng điểm cuối bằng cách sử dụng FastAPI, Docker, Lambda và Cổng API Amazon. Chúng tôi cũng chỉ cho bạn cách tự động hóa việc triển khai bằng cách sử dụng Bộ công cụ phát triển đám mây AWS (AWS CDK).
Tổng quan về giải pháp
Sơ đồ sau đây cho thấy kiến trúc của giải pháp mà chúng tôi triển khai trong bài đăng này.
Điều kiện tiên quyết
Bạn phải có các điều kiện tiên quyết sau:
- Đã cài đặt Python3, cùng với
virtualenv
để tạo và quản lý môi trường ảo trong Python - aws-cdk v2 được cài đặt trên hệ thống của bạn để có thể sử dụng AWS CDK CLI
- Docker được cài đặt và chạy trên máy cục bộ của bạn
Kiểm tra xem tất cả các phần mềm cần thiết đã được cài đặt chưa:
- Sản phẩm Giao diện dòng lệnh AWS (AWS CLI) là cần thiết. Đăng nhập vào tài khoản của bạn và chọn Khu vực mà bạn muốn triển khai giải pháp.
- Sử dụng đoạn mã sau để kiểm tra phiên bản Python của bạn:
- Kiểm tra nếu
virtualenv
được cài đặt để tạo và quản lý môi trường ảo trong Python. Nói đúng ra, đây không phải là một yêu cầu khó, nhưng nó sẽ giúp cuộc sống của bạn dễ dàng hơn và giúp theo dõi bài đăng này dễ dàng hơn. Sử dụng đoạn mã sau: - Kiểm tra xem cdk đã được cài đặt chưa. Điều này sẽ được sử dụng để triển khai giải pháp của chúng tôi.
- Kiểm tra xem Docker đã được cài đặt chưa. Giải pháp của chúng tôi sẽ giúp mô hình của bạn có thể truy cập được thông qua hình ảnh Docker tới Lambda. Để xây dựng hình ảnh này cục bộ, chúng tôi cần Docker.
- Đảm bảo Docker đang hoạt động với mã sau:
Cách cấu trúc dự án FastAPI của bạn bằng AWS CDK
Chúng tôi sử dụng cấu trúc thư mục sau cho dự án của mình (bỏ qua một số mã AWS CDK soạn sẵn không quan trọng trong ngữ cảnh của bài đăng này):
Thư mục tuân theo cấu trúc được đề xuất của các dự án AWS CDK cho Python.
Phần quan trọng nhất của kho lưu trữ này là fastapi_model_serving
danh mục. Nó chứa mã sẽ xác định ngăn xếp AWS CDK và các tài nguyên sẽ được sử dụng để phân phát mô hình.
Sản phẩm fastapi_model_serving
thư mục chứa model_endpoint
thư mục con chứa tất cả nội dung cần thiết tạo nên điểm cuối serverless của chúng tôi, cụ thể là Dockerfile để xây dựng hình ảnh Docker mà Lambda sẽ sử dụng, mã hàm Lambda sử dụng FastAPI để xử lý các yêu cầu suy luận và định tuyến chúng đến đúng điểm cuối và mô hình tạo phẩm của mô hình mà chúng tôi muốn triển khai. model_endpoint
cũng chứa những điều sau đây:
Docker
– Thư mục con này chứa các nội dung sau:Dockerfile
– Điều này được sử dụng để xây dựng hình ảnh cho hàm Lambda với tất cả các thành phần lạ (mã hàm Lambda, thành phần tạo mẫu của mô hình, v.v.) ở đúng vị trí để chúng có thể được sử dụng mà không gặp sự cố.serving.api.tar.gz
– Đây là một tarball chứa tất cả nội dung từ thư mục thời gian chạy cần thiết để xây dựng hình ảnh Docker. Chúng tôi thảo luận làm thế nào để tạo ra các.tar.gz
tập tin sau trong bài viết này.runtime
– Thư mục con này chứa các nội dung sau:serving_api
– Mã cho hàm Lambda và các phần phụ thuộc của nó được chỉ định trong tệp tests.txt.custom_lambda_utils
– Điều này bao gồm một tập lệnh suy luận tải các tạo phẩm mô hình cần thiết để mô hình có thể được chuyển đếnserving_api
điều đó sau đó sẽ hiển thị nó như một điểm cuối.
Ngoài ra, chúng tôi có thư mục mẫu cung cấp mẫu cấu trúc thư mục và tệp nơi bạn có thể xác định mã và API tùy chỉnh của mình theo mẫu mà chúng tôi đã trải qua trước đó. Thư mục mẫu chứa mã giả mà bạn có thể sử dụng để tạo các hàm Lambda mới:
dummy
– Chứa mã triển khai cấu trúc của hàm Lambda thông thường bằng cách sử dụng thời gian chạy Pythonapi
– Chứa mã triển khai hàm Lambda bao bọc điểm cuối FastAPI xung quanh cổng API hiện có
Triển khai giải pháp
Theo mặc định, mã này được triển khai bên trong vùng eu-west-1. Nếu bạn muốn thay đổi Khu vực, bạn có thể thay đổi biến ngữ cảnh DEPLOYMENT_REGION trong cdk.json
tập tin.
Tuy nhiên, xin lưu ý rằng giải pháp này cố gắng triển khai hàm Lambda trên kiến trúc arm64 và tính năng này có thể không khả dụng ở tất cả các Khu vực. Trong trường hợp này, bạn cần thay đổi tham số kiến trúc trong fastapi_model_serving_stack.py
tệp, cũng như dòng đầu tiên của Dockerfile bên trong thư mục Docker, để lưu trữ giải pháp này trên kiến trúc x86.
Để triển khai giải pháp, hãy hoàn thành các bước sau:
- Chạy lệnh sau để sao chép kho lưu trữ GitHub:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Bởi vì chúng tôi muốn giới thiệu rằng giải pháp có thể hoạt động với các tạo phẩm mô hình mà bạn đào tạo cục bộ, nên chúng tôi chứa một tạo tác mô hình mẫu của một tạo phẩm được đào tạo trước. Chưng cấtBERT mô hình trên trung tâm mô hình Hugging Face cho một nhiệm vụ trả lời câu hỏi trongserving_api.tar.gz
tài liệu. Thời gian tải xuống có thể mất khoảng 3–5 phút. Bây giờ, hãy thiết lập môi trường. - Tải xuống mô hình được đào tạo trước sẽ được triển khai từ trung tâm mô hình Hugging Face vào
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
danh mục. Nó cũng tạo ra một môi trường ảo và cài đặt tất cả các phụ thuộc cần thiết. Bạn chỉ cần chạy lệnh này một lần:make prep
. Lệnh này có thể mất khoảng 5 phút (tùy thuộc vào băng thông internet của bạn) vì lệnh này cần tải xuống các tạo phẩm mô hình. - Đóng gói các hiện vật mô hình bên trong một
.tar.gz
kho lưu trữ sẽ được sử dụng bên trong hình ảnh Docker được tích hợp trong ngăn xếp AWS CDK. Bạn cần chạy mã này bất cứ khi nào bạn thực hiện các thay đổi đối với các tạo phẩm mô hình hoặc chính API để luôn có phiên bản cập nhật nhất của điểm cuối phân phát được đóng gói:make package_model
. Các cổ vật đều ở đúng vị trí. Giờ đây, chúng tôi có thể triển khai ngăn xếp AWS CDK cho tài khoản AWS của bạn. - Chạy cdk bootstrap nếu đây là lần đầu tiên bạn triển khai ứng dụng AWS CDK vào một môi trường (kết hợp tài khoản + Khu vực):
Ngăn xếp này bao gồm các tài nguyên cần thiết cho hoạt động của bộ công cụ. Ví dụ: ngăn xếp bao gồm bộ chứa Amazon Simple Storage Service (Amazon S3) được dùng để lưu trữ các mẫu và nội dung trong quá trình triển khai.
Vì chúng tôi đang xây dựng hình ảnh Docker cục bộ trong quá trình triển khai AWS CDK này, chúng tôi cần đảm bảo rằng trình nền Docker đang chạy trước khi chúng tôi có thể triển khai ngăn xếp này thông qua AWS CDK CLI.
- Để kiểm tra xem Docker daemon có đang chạy trên hệ thống của bạn hay không, hãy sử dụng lệnh sau:
Nếu không nhận được thông báo lỗi, bạn nên sẵn sàng triển khai giải pháp.
- Triển khai giải pháp bằng lệnh sau:
Bước này có thể mất khoảng 5–10 phút do xây dựng và đẩy hình ảnh Docker.
Xử lý sự cố
Nếu bạn là người dùng Mac, bạn có thể gặp lỗi khi đăng nhập Đăng ký container đàn hồi Amazon (Amazon ECR) bằng thông tin đăng nhập Docker, chẳng hạn như Error saving credentials ... not implemented
. Ví dụ:
Trước khi có thể sử dụng Lambda trên bộ chứa Docker bên trong AWS CDK, bạn có thể cần phải thay đổi ~/docker/config.json
tài liệu. Cụ thể hơn, bạn có thể phải thay đổi tham số credsStore trong ~/.docker/config.json
đến osxkeychain. Điều đó giải quyết các sự cố đăng nhập Amazon ECR trên máy Mac.
Chạy suy luận thời gian thực
Phía sau của cậu Hình thành đám mây AWS ngăn xếp được triển khai thành công, hãy chuyển đến Kết quả đầu ra cho ngăn xếp của bạn trên bảng điều khiển AWS CloudFormation và mở URL điểm cuối. Giờ đây, mô hình của chúng tôi có thể truy cập được thông qua URL điểm cuối và chúng tôi đã sẵn sàng chạy suy luận theo thời gian thực.
Điều hướng đến URL để xem liệu bạn có thể thấy thông báo “hello world” hay không và thêm /docs
đến địa chỉ để xem bạn có thể xem trang giao diện người dùng vênh vang tương tác thành công hay không. Có thể có một số thời gian bắt đầu chậm, vì vậy bạn có thể phải đợi hoặc làm mới một vài lần.
Sau khi bạn đăng nhập vào trang đích của trang Giao diện người dùng vênh vang FastAPI, bạn có thể chạy qua thư mục gốc /
hay qua /question
.
Từ /
, bạn có thể chạy API và nhận được thông báo “hello world”.
Từ /question
, bạn có thể chạy API và chạy suy luận ML trên mô hình mà chúng tôi đã triển khai cho trường hợp trả lời câu hỏi. Ví dụ, chúng ta sử dụng câu hỏi What is the color of my car now? và bối cảnh là Xe của tôi từng có màu xanh nhưng tôi đã sơn lại màu đỏ.
Khi bạn chọn Thực hiện, dựa trên ngữ cảnh nhất định, mô hình sẽ trả lời câu hỏi bằng câu trả lời, như minh họa trong ảnh chụp màn hình sau.
Trong nội dung phản hồi, bạn có thể xem câu trả lời với điểm tin cậy từ mô hình. Bạn cũng có thể thử nghiệm với các ví dụ khác hoặc nhúng API vào ứng dụng hiện tại của mình.
Ngoài ra, bạn có thể chạy suy luận qua mã. Đây là một ví dụ được viết bằng Python, sử dụng requests
thư viện:
Mã xuất ra một chuỗi tương tự như sau:
Nếu bạn muốn biết thêm về việc triển khai Generative AI và các mô hình ngôn ngữ lớn trên AWS, hãy tham khảo tại đây:
- Triển khai AI sáng tạo không cần máy chủ trên AWS Lambda với OpenLLaMa
- Triển khai các mô hình ngôn ngữ lớn trên AWS Inferentia2 bằng cách sử dụng các bộ chứa suy luận mô hình lớn
Làm sạch
Bên trong thư mục gốc của kho lưu trữ của bạn, hãy chạy đoạn mã sau để dọn sạch tài nguyên của bạn:
Kết luận
Trong bài đăng này, chúng tôi đã giới thiệu cách bạn có thể sử dụng Lambda để triển khai mô hình ML được đào tạo của mình bằng cách sử dụng khung ứng dụng web ưa thích của bạn, chẳng hạn như FastAPI. Chúng tôi đã cung cấp một kho lưu trữ mã chi tiết mà bạn có thể triển khai và bạn duy trì tính linh hoạt khi chuyển sang bất kỳ tạo phẩm mô hình được đào tạo nào mà bạn xử lý. Hiệu suất có thể phụ thuộc vào cách bạn triển khai và triển khai mô hình.
Bạn được hoan nghênh dùng thử và chúng tôi rất vui khi nhận được phản hồi của bạn!
Về các tác giả
Đình Nghĩa Lý là Kiến trúc sư giải pháp doanh nghiệp của AWS có trụ sở tại Stockholm, Thụy Điển hỗ trợ các khách hàng Bắc Âu. Cô ấy thích trợ giúp khách hàng về kiến trúc, thiết kế và phát triển các giải pháp cơ sở hạ tầng được tối ưu hóa cho đám mây. Cô ấy chuyên về AI và Máy học và quan tâm đến việc trao quyền cho khách hàng bằng trí thông minh trong các ứng dụng AI/ML của họ. Khi rảnh rỗi, cô ấy cũng là một họa sĩ minh họa bán thời gian, viết tiểu thuyết và chơi piano.
Demir Catovic là Kỹ sư máy học của AWS có trụ sở tại Zurich, Thụy Sĩ. Anh ấy tương tác với khách hàng và giúp họ triển khai các ứng dụng ML có đầy đủ chức năng và có thể mở rộng. Anh đam mê xây dựng và sản xuất các ứng dụng máy học cho khách hàng, đồng thời luôn muốn khám phá các xu hướng mới và công nghệ tiên tiến trong thế giới AI/ML.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoData.Network Vertical Generative Ai. Trao quyền cho chính mình. Truy cập Tại đây.
- PlatoAiStream. Thông minh Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Trung tâmESG. Ô tô / Xe điện, Than đá, công nghệ sạch, Năng lượng, Môi trường Hệ mặt trời, Quản lý chất thải. Truy cập Tại đây.
- BlockOffsets. Hiện đại hóa quyền sở hữu bù đắp môi trường. Truy cập Tại đây.
- nguồn: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :là
- :không phải
- :Ở đâu
- $ LÊN
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Có khả năng
- Giới thiệu
- có thể truy cập
- Tài khoản
- ngang qua
- thêm vào
- Ngoài ra
- địa chỉ
- AI
- AI / ML
- Tất cả
- cho phép
- dọc theo
- Ngoài ra
- luôn luôn
- đàn bà gan dạ
- Amazon Web Services
- giữa
- an
- và
- trả lời
- bất kì
- api
- API
- ứng dụng
- Các Ứng Dụng
- các ứng dụng
- Tháng Tư
- kiến trúc
- lưu trữ
- LÀ
- xung quanh
- AS
- Tài sản
- At
- tự động hóa
- Tự động
- tự động
- có sẵn
- xa
- AWS
- Hình thành đám mây AWS
- AWS Lambda
- Backend
- Băng thông
- dựa
- BE
- bởi vì
- trước
- giữa
- Màu xanh da trời
- thân hình
- bootstrap
- mang lại
- rộng
- xây dựng
- Xây dựng
- xây dựng
- được xây dựng trong
- kinh doanh
- nhưng
- by
- CAN
- xe hơi
- trường hợp
- trường hợp
- thách thức
- thách thức
- thay đổi
- Những thay đổi
- kiểm tra
- sự lựa chọn
- Chọn
- đám mây
- mã
- mã số
- lạnh
- màu sắc
- kết hợp
- đến
- hoàn thành
- khái niệm
- sự tự tin
- Kết nối
- liên quan
- An ủi
- chứa
- Container
- Container
- chứa
- bối cảnh
- sửa chữa
- chi phí-hiệu quả
- có thể
- tạo
- tạo ra
- Tạo
- Credentials
- khách hàng
- tùy chỉnh
- tiên tiến
- dữ liệu
- Mặc định
- Tùy
- triển khai
- triển khai
- triển khai
- triển khai
- Thiết kế
- chi tiết
- phát triển
- Phát triển
- trực tiếp
- thảo luận
- phu bến tàu
- tài liệu hướng dẫn
- dont
- tải về
- hai
- suốt trong
- Sớm hơn
- dễ dàng
- dễ dàng hơn
- dễ dàng
- dễ dàng
- nỗ lực
- nhúng
- nâng cao vị thế
- cuối
- Điểm cuối
- cam kết
- ky sư
- Kỹ sư
- đảm bảo
- Doanh nghiệp
- Môi trường
- môi trường
- lôi
- ví dụ
- ví dụ
- kích thích
- thi hành
- hiện tại
- Ra
- thử nghiệm
- khám phá
- Đối mặt
- Đặc tính
- vài
- Tập tin
- Các tập tin
- Tên
- lần đầu tiên
- Linh hoạt
- linh hoạt
- theo
- tiếp theo
- sau
- Trong
- Khung
- từ
- chức năng
- chức năng
- chức năng
- cửa ngõ
- nói chung
- thế hệ
- Trí tuệ nhân tạo
- được
- GitHub
- được
- Go
- đi
- Phát triển
- xử lý
- Cứng
- Có
- he
- Nghe
- nặng
- nâng nặng
- giúp đỡ
- giúp đỡ
- giúp
- cô
- tại đây
- hiệu suất cao
- chủ nhà
- Độ đáng tin của
- Hướng dẫn
- Tuy nhiên
- HTML
- http
- HTTPS
- Hub
- i
- Nhàn rỗi
- if
- hình ảnh
- hình ảnh
- thực hiện
- thực hiện
- quan trọng
- in
- Mặt khác
- bao gồm
- các ngành công nghiệp
- Cơ sở hạ tầng
- trong
- cài đặt
- Sự thông minh
- tương tác
- quan tâm
- Internet
- trong
- giới thiệu
- các vấn đề
- IT
- ITS
- chính nó
- json
- Keen
- Biết
- hạ cánh
- Ngôn ngữ
- lớn
- một lát sau
- học tập
- Thư viện
- Cuộc sống
- nâng
- Lượt thích
- Dòng
- tải
- địa phương
- tại địa phương
- đăng nhập
- khai thác gỗ
- logic
- đăng nhập
- mac
- máy
- học máy
- thực hiện
- Chủ yếu
- làm cho
- LÀM CHO
- quản lý
- quản lý
- Có thể..
- Gặp gỡ
- tin nhắn
- microservices
- Might
- tâm
- Phút
- ML
- kiểu mẫu
- mô hình
- hiện đại
- chi tiết
- hầu hết
- di chuyển
- nhiều
- phải
- my
- cụ thể là
- cần thiết
- Cần
- cần thiết
- nhu cầu
- Mới
- tại
- of
- thường
- on
- hàng loạt
- ONE
- có thể
- mở
- mã nguồn mở
- hoạt động
- Các lựa chọn
- or
- gọi món
- bình thường
- Nền tảng khác
- vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf
- ra
- đóng gói
- trang
- tham số
- một phần
- thông qua
- đam mê
- hiệu suất
- kinh nguyệt
- Nơi
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- đóng
- Phổ biến
- Bài đăng
- Dự đoán
- ưa thích
- điều kiện tiên quyết
- quà
- quá trình
- Sản lượng
- dự án
- dự án
- bằng chứng
- bằng chứng về khái niệm
- Chứng minh
- cung cấp
- cung cấp
- cung cấp
- Đẩy
- Python
- câu hỏi
- sẵn sàng
- thời gian thực
- đỏ
- giảm
- khu
- vùng
- kho
- yêu cầu
- cần phải
- yêu cầu
- Yêu cầu
- Thông tin
- phản ứng
- kết quả
- giữ lại
- ngay
- nguồn gốc
- Route
- tuyến đường
- chạy
- chạy
- nhà làm hiền triết
- tiết kiệm
- khả năng mở rộng
- Quy mô
- các nhà khoa học
- phạm vi
- Điểm số
- xem
- lựa chọn
- lựa chọn
- Không có máy chủ
- Các máy chủ
- dịch vụ
- DỊCH VỤ
- phục vụ
- định
- chị ấy
- nên
- hiển thị
- giới thiệu
- thể hiện
- Chương trình
- có ý nghĩa
- đáng kể
- tương tự
- Đơn giản
- duy nhất
- So
- Phần mềm
- giải pháp
- Giải pháp
- Giải quyết
- một số
- nói
- chuyên nghành
- đặc biệt
- quy định
- ngăn xếp
- đứng
- Bắt đầu
- bắt đầu
- Trạng thái
- Bước
- Các bước
- là gắn
- hàng
- lưu trữ
- Chuỗi
- cấu trúc
- Thành công
- như vậy
- Hỗ trợ
- Thụy Điển
- switzerland
- hệ thống
- Hãy
- Nhiệm vụ
- Công nghệ
- mẫu
- mẫu
- thử nghiệm
- việc này
- Sản phẩm
- cung cấp their dịch
- Them
- sau đó
- Đó
- họ
- điều này
- Thông qua
- thời gian
- thời gian
- đến
- công cụ
- hàng đầu
- giao thông
- Train
- đào tạo
- Xu hướng
- thử
- ui
- unix
- up-to-date
- URL
- sử dụng
- đã sử dụng
- người sử dang
- sử dụng
- sử dụng
- phiên bản
- thông qua
- ảo
- chờ đợi
- muốn
- là
- we
- web
- Ứng dụng web
- các dịch vụ web
- chào mừng
- TỐT
- đi
- Điều gì
- Là gì
- khi nào
- bất cứ khi nào
- liệu
- cái nào
- CHÚNG TÔI LÀ
- sẽ
- với
- không có
- Công việc
- thế giới
- viết
- Bạn
- trên màn hình
- mình
- zephyrnet
- Zurich