# Đố vui cuối chương

Hãy kiểm tra những gì bạn đã học được trong chương này!

### 1. Bạn có thể sử dụng Gradio để làm gì?

<Question
	choices={[
        {
			text: "Tạo bản demo cho mô hình học máy của bạn",
			explain: "Với một vài dòng mã python, bạn có thể tạo bản demo cho mô hình ML của mình bằng cách sử dụng thư viện các thành phần được tạo sẵn của chúng tôi.",
			correct: true
		},
		{
			text: "Chia sẻ mô hình học máy của bạn với những người khác",
			explain: "Sử dụng tham số <code>share=True</code> trong phương thức khởi chạy, bạn có thể tạo liên kết chia sẻ để gửi cho bất kỳ ai.",
            correct: true
		},
		{
			text: "Gỡ lỗi mô hình của bạn",
			explain: "Một lợi thế của bản demo gradio là có thể kiểm tra mô hình của bạn với dữ liệu thực mà bạn có thể thay đổi và quan sát sự thay đổi dự đoán của mô hình trong thời gian thực, giúp bạn gỡ lỗi mô hình của mình.",
			correct: true
		},
		{
			text: "Huấn luyện mô hình của bạn",
			explain: "Gradio được thiết kể để sử dụng cho việc luận suy mô hình, SAU KHI mô hình của bạn đã được huấn luyện.",
		}
	]}
/>

### 2. Gradio CHỈ hoạt động với các mô hình PyTorch

<Question
	choices={[
        {
			text: "Đúng",
			explain: "Gradio hoạt động với các mô hình PyTorch, nhưng cũng hoạt động với bất kỳ loại mô hình học máy nào!"
        },
        {
			text: "Sai",
			explain: "Gradio là mô hình bất khả tri, có nghĩa là bạn có thể tạo bản demo cho bất kỳ loại mô hình học máy nào.",
			correct: true
        }
	]}
/>

### 3. Bạn có thể khởi chạy bản demo Gradio từ đâu?

<Question
	choices={[
        {
			text: "IDE python chuẩn",
			explain: "Gradio hoạt động hiệu quả với IDE yêu thích của bạn.",
            correct: true
        },
        {
			text: "Google Colab notebooks",
			explain: "Bạn có thể tạo và khởi chạy bản trình diễn trong notebook Google colab của mình.",
			correct: true
        },
        {
			text: "Jupyter notebooks",
			explain: "Lựa chọn tốt - Bạn có thể tạo và khởi chạy bản demo trong Jupyter notebook của mình.",
			correct: true
        }
	]}
/>

### 4. Gradio được thiết kế chủ yếu cho các mô hình NLP

<Question
	choices={[
        {
			text: "Đúng",
			explain: "Gradio hoạt động với khá nhiều kiểu dữ liệu, không chỉ NLP."
        },
        {
			text: "Sai",
			explain: "Gradio cung cấp cho các nhà phát triển thư viện các thành phần được tạo sẵn cho hầu hết các loại dữ liệu.",
            correct: true
        }
	]}
/>

### 5. Tính năng nào sau đây được hỗ trợ bởi Gradio?

<Question
	choices={[
        {
			text: "Nhiều đầu vào và đầu ra",
			explain: "Có thể có nhiều đầu vào và đầu ra với gradio. Tất cả những gì bạn cần làm là chuyển danh sách đầu vào và đầu ra cho các tham số tương ứng của chúng",
            correct: true
        },
        {
			text: "Trạng thái duy trì dữ liệu",
			explain: "Gradio có khả năng thêm trạng thái vào giao diện của bạn.",
			correct: true
        },
        {
			text: "Xác thực tên người dùng và mật khẩu",
			explain: "Chuyển danh sách tên người dùng/mật khẩu vào phương thức khởi chạy để thêm xác thực.",
			correct: true
        },
        {
			text: "Phân tích tự động cho những ai sử dụng bản demo gradio của bạn",
			explain: "Hãy thử lại - Gradio không cung cấp phân tích cho các nhà phát triển về những người sử dụng bản demo của họ."
        },
        {
			text: "Tải mô hình từ Model Hub của Hugging Face hoặc Hugging Face Spaces",
			explain: "Chắc chắn rồi - tải bất kỳ mô hình Hugging Face nào qua phương thức <code>gr.Interface.load()</code>",
			correct: true
        }
	]}
/>

### 6. Cách nào sau đây là cách hợp lệ để tải mô hìnhHugging Face từ Hub hoặc Spaces?

<Question
	choices={[
        {
			text: "gr.Interface.load('huggingface/{user}/{model_name}')",
			explain: "Đây là phương pháp hợp lệ để tải mô hình Hugging Face từ Hub",
            correct: true
        },
        {
			text: "gr.Interface.load('model/{user}/{model_name}')",
			explain: "Đây là phương pháp hợp lệ để tải mô hình Hugging Face từ Hub",
			correct: true
        },
        {
			text: "gr.Interface.load('demos/{user}/{model_name}')",
			explain: "Hãy thử lại - bạn không thể tải mô hình bằng cách sử dụng tiền tố 'demos'."
        },
        {
			text: "gr.Interface.load('spaces/{user}/{model_name}')",
			explain: "Đây là phương pháp hợp lệ để tải mô hình Hugging Face từ Spaces",
			correct: true
        }
	]}
/>

### 7. Chọn tất cả các bước cần thiết để thêm trạng thái vào giao diện Gradio của bạn

<Question
	choices={[
        {
			text: "Truyền một tham số bổ sung vào hàm dự đoán của bạn, thể hiện trạng thái của giao diện.",
			explain: "Cần có thêm một tham số lưu trữ lịch sử hoặc trạng thái giao diện của bạn.",
            correct: true
        },
        {
			text: "Ở cuối hàm dự đoán, hãy trả về giá trị đã cập nhật của trạng thái dưới dạng giá trị trả về bổ sung.",
			explain: "Giá trị lịch sử hoặc trạng thái này cần được hàm của bạn trả về.",
            correct: true
        },
        {
			text: "Thêm thành phần đầu vào trạng thái và thành phần đầu ra trạng thái khi tạo Interface của bạn",
			explain: "Gradio cung cấp thành phần đầu vào và đầu ra trạng thái để duy trì dữ liệu.",
            correct: true
        }
	]}
/>

### 8. Những thành phần nào sau đây có trong thư viện Gradio?

<Question
	choices={[
        {
			text: "Textbox.",
			explain: "Đúng, bạn có thể tạo hộp văn bản với thành phần Hộp văn bản.",
            correct: true
        },
        {
			text: "Graph.",
			explain: "Hiện không có thành phần này.",
        },
        {
			text: "Image.",
			explain: "Đúng, bạn có thể tạo tiện ích tải lên hình ảnh bằng thành phần Image.",
            correct: true
        },
        {
			text: "Audio.",
			explain: "Đúng, bạn có thể tạo tiện ích tải lên âm thanh bằng thành phần Audio.",
            correct: true
        },
	]}
/>

### 9. Gradio `Blocks` cho phép bạn làm gì?

<Question
	choices={[
        {
			text: "Kết hợp nhiều bản demo vào một ứng dụng web",
			explain: "Bạn có thể sử dụng `with gradio.Tabs():` để thêm các tab cho nhiều bản demo",
			correct: true
        },
        {
			text: "Gán các trình kích hoạt sự kiện, chẳng hạn như được nhấp/thay đổi/ v.v. cho các thành phần `Blocks`",
			explain: "Khi bạn gán một sự kiện, bạn truyền vào ba tham số: fn: hàm cần được gọi, inputs: (danh sách) của (các) thành phần đầu vào và outputs: (danh sách) các thành phần đầu ra nên gọi là.",
			correct: true
        },
        {
			text: "Tự động xác định thành phần `Blocks` nào nên tương tác so với tĩnh",
			explain: "Dựa trên các trình kích hoạt sự kiện mà bạn xác định,`Blocks` tự động tìm ra liệu một thành phần có nên chấp nhận đầu vào của người dùng hay không.",
			correct: true
        },
		 {
			text: "Tạo bản demo đa bước; nghĩa là cho phép bạn sử dụng lại đầu ra của một thành phần làm đầu vào cho thành phần tiếp theo",
			explain: "Bạn có thể sử dụng một thành phần cho đầu vào của một trình kích hoạt sự kiện nhưng là đầu ra của một thành phần khác.",
            correct: true
        },
	]}
/>

### 10. Bạn có thể chia sẻ liên kết công khai tới `Blocks` demo và tổ chức lưu trữ `Blocks` demo trên Hugging Face Spaces.

<Question
	choices={[
        {
			text: "Đúng",
			explain: "Cũng giống như `Interface`, tất cả các khả năng chia sẻ và lưu trữ các bản demo của `Blocks` đều giống nhau!",
			correct: true
        },
        {
			text: "Sai",
			explain: "Cũng giống như `Interface`,tất cả các khả năng chia sẻ và lưu trữ các bản demo của `Blocks` đều giống nhau!",
			correct: false
        }
	]}
/>


<EditOnGithub source="https://github.com/huggingface/course/blob/main/chapters/vi/chapter9/9.mdx" />