Skip to content

Commit 4b54e49

Browse files
zhongdongyyao-matrix
authored andcommitted
safecoder cn done (huggingface#40) (huggingface#1418)
Co-authored-by: Yao Matrix <[email protected]>
1 parent f55e63e commit 4b54e49

File tree

3 files changed

+233
-0
lines changed

3 files changed

+233
-0
lines changed

zh/_blog.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,17 @@
809809
- diffusion
810810
- game-dev
811811

812+
- local: sd_distillation
813+
title: "开源 SD-Small 和 SD-Tiny 知识蒸馏代码与权重"
814+
author: harishsegmind
815+
guest: true
816+
thumbnail: /blog/assets/distill_sd/thumbnail.png
817+
date: August 1, 2023
818+
tags:
819+
- stable-diffusion
820+
- research
821+
- diffusers
822+
812823
- local: dpo-trl
813824
title: "使用 DPO 微调 Llama 2"
814825
author: kashif
@@ -830,6 +841,16 @@
830841
- benchmark
831842
- bark
832843

844+
- local: safecoder
845+
title: "推介 SafeCoder"
846+
author: jeffboudier
847+
thumbnail: /blog/assets/159_safecoder/thumbnail.jpg
848+
date: August 22, 2023
849+
tags:
850+
- announcement
851+
- partnerships
852+
- vmware
853+
- bigcode
833854

834855
- local: gptq-integration
835856
title: "使用 AutoGPTQ 和 transformers 让大语言模型更轻量化"

zh/safecoder.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
title: "推介 SafeCoder"
3+
thumbnail: /blog/assets/159_safecoder/thumbnail.jpg
4+
authors:
5+
- user: jeffboudier
6+
- user: philschmid
7+
translators:
8+
- user: MatrixYao
9+
---
10+
11+
# 推介 SafeCoder
12+
13+
<!-- {blog_metadata} -->
14+
<!-- {authors} -->
15+
16+
今天,我们向大家隆重介绍 SafeCoder —— 一款专为企业打造的代码助手解决方案。
17+
18+
SafeCoder 志在成为你完全合规且自托管的结对程序员,从而释放企业的软件开发生产力。用营销话术来讲就是:“你自己的本地 GitHub Copilot”。
19+
20+
在深入探讨之前,我们先简单了解一下 SafeCoder:
21+
22+
- SafeCoder 不是一个模型,而是一个完整的端到端商业解决方案
23+
- SafeCoder 以安全及隐私为核心原则 - 代码在训练或推理过程中永远不会离开 VPC(Virtual Private Cloud,虚拟私有云)
24+
- SafeCoder 专为客户在自己的基础设施上自行托管而设计
25+
- SafeCoder 旨在让客户真正拥有自己的代码大语言模型
26+
27+
![示例](/blog/assets/159_safecoder/coding-example.gif)
28+
29+
30+
## 为何选择 SafeCoder?
31+
32+
基于 LLM 的代码助理解决方案(如 GitHub Copilot)正在掀起巨大的[生产力提升](https://github.blog/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/)浪潮。对于企业来说,这使得它们能够用公司自己的代码库去调整代码大模型从而创建出专属于自己的代码大模型以提高代码补全的可靠性及相关性,从而进一步提高生产力。一个例子是,据 Google 报告,其内部的 LLM 代码助理在基于内部代码库训练后,代码补全[接受率提高到了 25-34%](https://ai.googleblog.com/2022/07/ml-enhanced-code-completion-improves.html)
33+
34+
然而,依靠闭源代码大模型来创建内部代码助理会让公司面临合规及安全问题。首先,在训练期间,在内部代码库上微调闭源代码大模型需要将此代码库向第三方公开。其次,在推理过程中,经过微调的代码大模型可能会在推理过程中“泄漏”其训练数据集中的代码。为了合规,企业需要在自己的基础设施上部署微调过的代码大模型 - 这对于闭源 LLM 来说是不可能的。
35+
36+
借助 SafeCoder,Hugging Face 可以帮助客户构建自己的代码大模型,使得客户可以最先进的库,在其私有代码库上微调最先进的开放模型,而无需与 Hugging Face 或任何其他第三方共享数据。通过 SafeCoder,Hugging Face 会提供容器化、硬件加速的代码大模型推理解决方案,由客户直接在其信任的、安全的基础设施上部署,从而使得整个代码输入和补全过程无需离开客户自己的安全 IT 环境。
37+
38+
## 从 StarCoder 到 SafeCoder
39+
40+
SafeCoder 解决方案的核心是 [BigCode](https://huggingface.co/bigcode) 项目训出来的 [StarCoder](https://huggingface.co/bigcode/starcoder) 系列代码大模型。BigCode 项目是一个由 Hugging Face、ServiceNow 及开源社区共同合作完成的开源项目。
41+
42+
StarCoder 模型是企业自托管解决方案的理想选择,其优势如下:
43+
44+
- 最先进的代码补全效果 - 详情可参阅[论文](https://huggingface.co/papers/2305.06161)[多语言代码评估排行榜](https://huggingface.co/spaces/bigcode/multilingual)
45+
46+
- 为推理性能而生:代码级优化的 15B 模型、可以减少内存占用的多查询注意力(Multi-Query Attention,MQA)以及可将上下文扩展至 8192 个词元的 Flash 注意力。
47+
48+
- 基于 [The Stack](https://huggingface.co/datasets/bigcode/the-stack) 数据集训练,这是一个来源符合道德准则的开源代码数据集,其中仅包含可商用的许可代码,且从一开始就包含了允许开发人员自主将其代码库退出的机制,此外我们还对其进行了大量的 PII 删除和代码去重工作。
49+
50+
注意:虽然 StarCoder 是 SafeCoder 的灵感来源和首个基础模型。但基于开源模型构建 LLM 解决方案的一个重要好处是它可以用上最新最好的开源模型,因此,将来 SafeCoder 不排除会基于其他类似的、可商用的、开源的、来源符合道德准则的公开透明的开源代码数据集的基础 LLM 进行微调。
51+
52+
## 核心原则之隐私和安全
53+
54+
对于任何公司而言,内部代码库都是其最重要、最有价值的知识产权。 SafeCoder 的一个核心原则是,在训练和推理过程中,任何第三方(包括 Hugging Face)永远不会访问到客户内部代码库。
55+
56+
当客户开始搭建 SafeCoder 方案时,Hugging Face 团队会提供容器、脚本和示例,并与客户携手合作以对内部代码库数据进行选择、提取、准备、复制、脱敏,最终生成训练数据集,然后客户就可以配置好 Hugging Face 提供的训练容器并将其部署至自管基础设施上。
57+
58+
到了部署阶段,客户会在自管基础设施上部署 Hugging Face 提供的容器,并在其 VPC 内发布内部私有推理终端。这些容器可根据客户自己的硬件环境进行相应配置,目前主要支持的硬件有:英伟达 GPU、AMD Instinct GPU、英特尔至强 CPU、AWS Inferentia2 以及 Habana Gaudi。
59+
60+
## 核心原则之合规
61+
62+
由于目前在全世界范围内,围绕机器学习模型和数据集的监管框架仍在制定中,跨国公司需要确保其使用的解决方案能够最大限度地降低法律风险。
63+
64+
数据源、数据治理、版权数据管理是其中最重要的几个需考量的合规领域。在这些问题得到人工智能欧盟法案草案的广泛认可之前,BigCode 的老表和灵感来源 BigScience 已在其在工作组中解决了这些问题,并因此[在斯坦福 CRFM 研究中被评为最合规的基础模型提供商](https://crfm.stanford.edu/2023/06/15/eu-ai-act.html)
65+
66+
BigCode 发扬了 BigScience 的工作,其以合规为核心原则构建 The Stack 数据集并围绕这个数据集实施了一系列新技术。例如对可商用许可证进行过滤、同意机制(开发人员可以[轻松地查到他们的代码是否在数据集中并要求将其代码从数据集中剔除](https://huggingface.co/spaces/bigcode/in-the-stack))、大量的用于审查[源代码数据](https://huggingface.co/datasets/bigcode/the-stack-metadata)的文档和工具,以及数据集改进方案(如[数据去重](https://huggingface.co/blog/zh/dedup)[PII 删除](https://huggingface.co/bigcode/starpii))。
67+
68+
所有这些努力都大大降低了 StarCoder 模型用户和 SafeCoder 客户的法律风险。对于 SafeCoder 用户来说,这些工作最终还形成了一个合规性功能:当软件开发人员用 SafeCoder 进行代码补全时,可将其与 The Stack 数据集进行比对,以便知道生成的代码是否与源数据集中的某些现有代码匹配,以及对应代码的许可证是什么。客户甚至可以指定许可证白名单并向用户展示在白名单内的代码。
69+
70+
## 产品说明
71+
SafeCoder 是一个完整的商业解决方案,包括服务、软件及相应的支持。
72+
73+
### 训练你自己的 SafeCoder 模型
74+
75+
StarCoder 的训练数据中有 80 多种编程语言,其在[多个测试基准](https://huggingface.co/spaces/bigcode/multilingual-code-evals)上名列前茅。为了使 SafeCoder 客户能得到更好、更有针对性的代码建议,用户可以选择让我们从训练阶段开始参与,此时 Hugging Face 团队直接与客户团队合作,指导他们准备并构建训练代码数据集,并微调出他们自己的代码生成模型,而无需将其代码库暴露给第三方或上传到互联网上。
76+
77+
最终生成的是一个适合客户的编程语言、标准及实践的模型。通过这个过程,SafeCoder 客户可以学习该流程并构建一个用于创建和更新自有模型的流水线,确保不被供应商锁定,并保持对其 AI 功能的控制力。
78+
79+
### 部署 SafeCoder
80+
81+
在部署阶段,SafeCoder 客户和 Hugging Face 一起设计并组建能支持所需并发性的最佳基础设施,从而提供出色的开发者体验。然后,Hugging Face 据此构建出 SafeCoder 推理容器,这些容器经过硬件加速并针对吞吐进行了优化。最后,由客户部署在自己的基础设施上。
82+
83+
SafeCoder 推理支持各种硬件,为客户提供广泛的选择:英伟达 Ampere GPU、AMD Instinct GPU、Habana Gaudi2、AWS Inferentia 2、英特尔至强 Sapphire Rapids CPU 等。
84+
85+
### 使用 SafeCoder
86+
87+
一旦部署了 SafeCoder 并在客户 VPC 中上线了其推理端点,开发人员就可以安装兼容的 SafeCoder IDE 插件,以便在工作时获取代码建议。当前,SafeCoder 支持流行的 IDE,包括 [VSCode](https://marketplace.visualstudio.com/items?itemName=HuggingFace.huggingface-vscode)、IntelliJ,同时我们的合作伙伴还在开发更多插件,尽请期待。
88+
89+
## 如何获取 SafeCoder?
90+
91+
今天,我们在 VMware Explore 大会上宣布与 VMware 合作推出 SafeCoder,并向 VMware 企业客户提供 SafeCoder。与 VMware 合作有助于确保 SafeCoder 在客户的 VMware Cloud 基础设施上成功部署 - 无论客户更青睐云、本地还是混合基础设施。除了 SafeCoder 本身外,VMware 还发布了一个[参考架构](https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/docs/vmware-baseline-reference-architecture-for-generative-ai.pdf),其中包含了一些示例代码,可以帮助用户用最短时间在 VMware 基础设施上部署和运营 SafeCoder 从而创造价值。VMware 的私有 AI 参考架构使组织能够轻松快速地利用流行的开源项目(例如 Ray 和 kubeflow)围绕其私有数据集部署 AI 服务。同时,通过与 Hugging Face 合作,组织还能保持利用最新技术及以及最佳开源模型的灵活性。这一切都无需在总拥有成本或性能上进行权衡。
92+
93+
“我们与 Hugging Face 围绕 SafeCoder 进行的合作与 VMware 的目标完美契合,即让客户能够选择解决方案,同时维护其隐私及其对业务数据的控制。事实上,我们已经在内部运行 SafeCoder 几个月了,并且已经看到了出色的结果。最重要的是,我们与 Hugging Face 的合作才刚刚开始,我很高兴能够将我们的解决方案带给全球数十万客户。” VMware AI 研究院副总裁 Chris Wolf 说道。 点击[此处](https://octo.vmware.com/vmware-private-ai-foundation/)可详细了解私有 AI 和 VMware 在这一新兴领域的差异化功能。
94+
---
95+
96+
如果你对在贵公司部署 SafeCoder 感兴趣,请于[此处](mailto:[email protected]?subject=SafeCoder)联系我们 - 我们的团队将联系你并与你讨论需求!
97+
98+
> 英文原文: <url> https://huggingface.co/blog/safecoder </url>
99+
> 原文作者:Jeff Boudier,Philipp Schmid
100+
> 译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。

zh/sd_distillation.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
title: "开源 SD-Small 和 SD-Tiny 知识蒸馏代码与权重"
3+
thumbnail: /blog/assets/distill_sd/thumbnail.png
4+
authors:
5+
- user: harishsegmind
6+
guest: true
7+
- user: Warlord-K
8+
guest: true
9+
- user: Gothos
10+
guest: true
11+
translators:
12+
- user: innovation64
13+
- user: zhongdongy
14+
proofreader: true
15+
---
16+
17+
<h1> 开源 SD-Small 和 SD-Tiny 知识蒸馏代码与权重 </h1>
18+
19+
<!-- {blog_metadata} -->
20+
<!-- {authors} -->
21+
22+
<p align="center">
23+
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/distill_sd/Picture1.png" width=500>
24+
</p>
25+
26+
最近,人工智能社区在开发更大、更高性能的语言模型方面取得了显著的进展,例如 Falcon 40B、LLaMa-2 70B、Falcon 40B、MPT 30B; 以及在图像领域的模型,如 SD2.1 和 SDXL 。这些进步无疑推动了人工智能的发展,使其具有高度多功能和最先进的图像生成和语言理解能力。然而,在我们惊叹于这些模型的强大和复杂性之余,必须认识到一个日益增长的需求: 使人工智能模型体量更小、运行更高效、更易于访问,特别是通过开源它们来共建生态。
27+
28+
[Segmind](https://www.segmind.com/models),我们一直致力于如何使生成式 AI 更快、更便宜。去年,我们开源了我们加速的 SD-WebUI 库 [voltaML](https://github.com/VoltaML/voltaML-fast-stable-diffusion),它是一个基于 AITemplate/TensorRT 的推理加速库,推理速度提高了 4-6 倍。为了继续实现使生成模型更快、更小、更便宜的目标,我们正在开源我们压缩的 **SD 模型:SD-Small 和 SD-Tiny** 的权重和训练代码。预训练的检查点可在 [Hugging Face 🤗](https://huggingface.co/segmind) 上获取。
29+
30+
## 知识蒸馏
31+
32+
<p align="center">
33+
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/distill_sd/Picture2.png" width=500>
34+
</p>
35+
36+
我们的新压缩模型已经经过知识蒸馏 (KD) 技术的训练,这项工作主要基于 [这篇论文](https://openreview.net/forum?id=bOVydU0XKC)。作者描述了一种块移除知识蒸馏方法,其中一些 UNet 层被移除,学生模型权重被训练。使用论文中描述的 KD 方法,我们能够使用 [🧨 diffusers](https://github.com/huggingface/diffusers) 库训练两个压缩模型; **Small (微小版本)****Tiny (极小版本)**,分别比基础模型少 35% 和 55% 的参数,同时实现与基础模型相当的图像保真度。我们已经在这个 [repo](https://github.com/segmind/distill-sd) 中开源了我们的蒸馏代码,并将预训练检查点上传到了 [Hugging Face 🤗](https://huggingface.co/segmind)
37+
38+
知识蒸馏训练神经网络类似于老师一步一步指导学生。一个大的老师模型 (teacher model) 预先在大量数据上训练,然后一个较小的模型在较小的数据集上训练,以模仿大模型的输出并在数据集上进行经典训练。
39+
40+
在这种特殊类型的知识蒸馏中,学生模型被训练来完成从纯噪声恢复图像的正常扩散任务,但同时,模型被迫与更大的老师模型的输出匹配。输出匹配发生在 U-nets 的每个块,因此模型质量基本保持不变。所以,使用前面的类比,我们可以说,在这种蒸馏过程中,学生不仅会试图从问题和答案中学习,还会从老师的答案以及逐步得到答案的方法中学习。我们在损失函数中有 3 个组成部分来实现这一点,首先是目标图像隐变量和生成图像隐变量之间的传统损失。其次是老师生成的图像隐变量和学生生成的图像隐变量之间的损失。最后,也是最重要的组成部分,是特征级损失,即老师和学生每个块输出之间的损失。
41+
42+
结合所有这些构成了知识蒸馏训练。下面是论文中描述的用于 KD 的块移除 UNet 架构。
43+
44+
<p align="center">
45+
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/distill_sd/Picture3.png" width=500>
46+
</p>
47+
48+
图片来自 Shinkook 等人的 [论文](https://arxiv.org/abs/2305.15798) “On Architectural Compression of Text-to-Image Diffusion Models”。
49+
50+
我们以 [Realistic-Vision 4.0](https://huggingface.co/SG161222/Realistic_Vision_V4.0_noVAE) 为基础老师模型,并在[LAION Art Aesthetic 数据集](https://huggingface.co/datasets/recastai/LAION-art-EN-improved-captions) 上训练,图像分数高于 7.5,因为它们具有高质量的图像描述。与论文不同,我们选择分别为 Small 和 Tiny 模式训练两个模型,分别在 1M 张图像上进行 100K 步和 125K 步的训练。蒸馏训练的代码可以在 [这里](https://github.com/segmind/distill-sd) 找到。
51+
52+
## 模型使用
53+
54+
模型可以通过 [🧨 diffusers](https://github.com/huggingface/diffusers) 中的 DiffusionPipeline 来使用。
55+
56+
```python
57+
from diffusers import DiffusionPipeline
58+
import torch
59+
60+
pipeline = DiffusionPipeline.from_pretrained("segmind/small-sd", torch_dtype=torch.float16)
61+
prompt = "Portrait of a pretty girl"
62+
negative_prompt = "(deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.4), text, close up, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck"
63+
image = pipeline(prompt, negative_prompt = negative_prompt).images[0]
64+
image.save("my_image.png")
65+
```
66+
67+
## 推理延迟方面的速度表现
68+
69+
我们观察到,蒸馏模型比原始基础模型快了一倍。基准测试代码可以在 [这里](https://github.com/segmind/distill-sd/blob/master/inference.py) 找到。
70+
71+
<p align="center">
72+
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/distill_sd/Picture4.jpeg" width=500>
73+
</p>
74+
75+
## 潜在的局限性
76+
77+
蒸馏模型处于早期阶段,输出可能还不具备生产水平的质量。这些模型可能不是最好的通用模型,它们最好用作针对特定概念/风格进行微调或 LoRA 训练。蒸馏模型目前还不太擅长组合性或多概念。
78+
79+
## 在人像数据集上微调 SD-tiny 模型
80+
81+
我们已经在 Realistic Vision v4.0 模型生成的人像图像上微调了我们的 sd-tiny 模型。下面是使用的微调参数。
82+
83+
|原版参数|中文释义|
84+
|--|--|
85+
| Steps: 131000|步数: 131000|
86+
| Learning rate: 1e-4 |学习率: 1e-4|
87+
| Batch size: 32|批量大小: 32|
88+
| Gradient accumulation steps: 4|梯度累积步数: 4|
89+
| Image resolution: 768|图像分辨率: 768|
90+
| Dataset size: 7k images|数据集大小: 7 千张图像|
91+
| Mixed precision: fp16|混合精度: fp16|
92+
93+
我们能够产生接近原始模型产生的图像质量,参数减少了近 40%,下面的样本结果不言自明:
94+
95+
<p align="center">
96+
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/distill_sd/Picture5.png" width=500>
97+
</p>
98+
99+
100+
微调基础模型的代码可以在 [这里](https://github.com/segmind/distill-sd/blob/master/checkpoint_training.py) 找到。
101+
102+
## LoRA 训练
103+
104+
在蒸馏模型上进行 LoRA 训练的一个优点是训练更快。下面是我们在蒸馏模型上对一些抽象概念进行的第一个 LoRA 训练的一些图像。LoRA 训练的代码可以在 [这里](https://github.com/segmind/distill-sd/blob/master/lora_training.py) 找到。
105+
106+
<p align="center">
107+
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/distill_sd/Picture6.png" width=500>
108+
</p>
109+
110+
## 结论
111+
112+
我们邀请开源社区帮助我们改进并实现这些蒸馏 SD 模型的更广泛采用。用户可以加入我们的 [Discord](https://discord.gg/s6E6eHJk) 服务器,在那里我们将宣布这些模型的最新更新,发布更多的检查点和一些令人兴奋的新 LoRAs。如果你喜欢我们的工作,请在我们的 [Github](https://github.com/segmind/distill-sd) 上给我们点一下 star。

0 commit comments

Comments
 (0)